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>
文档最后更新时间:2020-04-15 17:23:14