安装thinkphp6
composer create-project topthink/think=6.0.x-dev tp
安装think-swoole的扩展库
composer require topthink/think-swoole
注:think-swoole安装很困难,需要先给PHP安装swoole扩展,然后删除PHP禁用的函数(具体那些禁用的函数需要删除,安装会报错,报错里有提示有删除那些禁用的函数),最后安装网速特别慢可能导致安装不上,建议在香港服务器上安装。
修改conflg文件夹下的swoole.php文件下的配置参数
['host']=>'0.0.0.0'['port']=>'9502'//这是端口,可自行决定用哪个端口。
在swoole.php文件中引入文件
use app\websocket\privater\Handler;use app\websocket\privater\Packet;
修改参数
'handler' => Handler::class,'parser' => Parser::class,
Handler.php文件源码如下
namespace app\websocket\privater;use Swoole\Server;use Swoole\Websocket\Frame;use Swoole\WebSocket\Server as WebsocketServer;use think\Config;use think\Request;use think\swoole\contract\websocket\HandlerInterface;//Handler全部返回false,将逻辑全部交给WebsocketEvent处理class Handler implements HandlerInterface{ protected $server; protected $config; public function __construct(Server $server, Config $config) { $this->server = $server; $this->config = $config; } public function onOpen($fd, Request $request) { //交给Connect监听处理 return false; } public function onMessage(Frame $frame) { //返回false触发全局监听 return false; } public function onClose($fd, $reactorId) { return false; }}
Parser.php文件源码如下
namespace app\websocket\privater;use think\swoole\contract\websocket\ParserInterface;class Parser implements ParserInterface{ public function encode(string $event, $data) { return json_encode(['event' => $event, 'data' => $data], 320); } public function decode($frame) { $payload = Packet::getPayload($frame->data); return [ 'event' => $payload['event'] ?? null, 'data' => $payload['data'] ?? null, ]; }}
Handler.php用于websocket事件的响应,如open/message等.必要文件
Parser .php用于消息体的解析,这里使用的格式为json,若换成其他通讯格式只要下对encode/decode编解码方法重写即可.必要文件
配置完成了
在项目根目录下执行以下命令启动swoole
php think swoole start
执行如下命令重启swoole
php think swoole restart
执行如下命令停止swoole
php think swoole stop
到这里,swoole的配置,启动,重新,停止。就写完了,具体的项目需求还需要你自己在Handler.php文件里修改项目需求。
来源地址:https://blog.csdn.net/weixin_46704937/article/details/127009980