电话
13363039260
Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。
本教程以WebSocket为例。
一、安装Swoole4
宝塔面板为例,在php设置中直接可以安装
二、测试程序脚本
1、在web目录中新建文件/api/sms.php (注意文件名大小写格式)
<?php
/**
* sms服务端入口文件
*/
define('IS_API', basename(__FILE__, '.php')); // 项目标识
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); // 该文件的名称
require(dirname(dirname(__FILE__)).'/index.php'); // 引入主文件
2、再到xunruicms的主程序目录建立业务处理文件 /dayrui/My/Api/Sms.php (注意文件名大小写格式)
//创建websocket服务器对象,监听0.0.0.0:9502端口
$ws = new Swoole\WebSocket\Server("0.0.0.0", 9502);
//监听WebSocket连接打开事件
$ws->on('open', function ($ws, $request) {
var_dump($request->fd, $request->get, $request->server);
$ws->push($request->fd, "hello, welcome\n");
});
//监听WebSocket消息事件
$ws->on('message', function ($ws, $frame) {
echo "Message: {$frame->data}\n";
$ws->push($frame->fd, "server: {$frame->data}");
});
//监听WebSocket连接关闭事件
$ws->on('close', function ($ws, $fd) {
echo "client-{$fd} is closed\n";
});
$ws->start();
这个是swoole官方的例子
3、使用命令行工具执行文件:
php 网站根目录/api/sms.php
如果这种样子表服务已经正常启动了
4、安全组放行端口号:9502
5、宝塔防火墙放行端口号:9502
6、使用swoole官方例子在任意html文件中加上客户端测试代码
<script>
var wsServer = 'ws://网站域名或ip地址:9502';
var websocket = new WebSocket(wsServer);
websocket.onopen = function (evt) {
console.log("Connected to WebSocket server.");
};
websocket.onclose = function (evt) {
console.log("Disconnected");
};
websocket.onmessage = function (evt) {
console.log('Retrieved data from server: ' + evt.data);
};
websocket.onerror = function (evt, e) {
console.log('Error occured: ' + evt.data);
};
</script>