展会网站怎么做,天津网站建设技术支持,企业网站推广的目的,深圳集团网站建设哪家好环境#xff1a;centOS7.9、php8.3、thinkphp8.0\think-swoole4.1
我用的官方think-swoole插件
第一步#xff1a;根据官方文档#xff0c;需要安装此扩展插件
composer require topthink/think-swoole
第二步#xff1a;在根目录下config文件夹下编辑swoole.php配置文…环境centOS7.9、php8.3、thinkphp8.0\think-swoole4.1
我用的官方think-swoole插件
第一步根据官方文档需要安装此扩展插件
composer require topthink/think-swoole
第二步在根目录下config文件夹下编辑swoole.php配置文件 http [enable true,host 0.0.0.0, // 任意ip都可以访问http服务;port 8080, // 宝塔和阿里云、腾讯云的安全组需要开放此端口;worker_num swoole_cpu_num(),options [daemonize true], // 守护进程运行],websocket [enable true, // 默认为false, 一定要开启route false, // 最大的坑在做测试时,一定要关闭,否则调试不出结果;handler \think\swoole\websocket\Handler::class,ping_interval 25000,ping_timeout 60000,room [type table,table [room_rows 8192,room_size 2048,client_rows 4096,client_size 2048,],redis [host 127.0.0.1,port 6379,max_active 3,max_wait_time 5,],],listen [event \app\index\listener\WebsocketTest::class,//事件监听close app\index\listener\WsClose,//关闭事件],subscribe [],],
第三步我的框架是多应用模式我创建了index应用
// WebsocketTest.php; 路径: app\index\listener
namespace app\index\listener;
use think\Container;
use think\swoole\Websocket;class WebsocketTest
{public $websocket null;public function __construct(Container $container){$this-websocket $container-make(Websocket::class);}/*** 事件监听处理* param $event*/public function handle($event){echo 接收到事件, . $event-type . --- . $event-data;echo --------;var_dump($event);$func $event-type;$this-$func($event);}/*** 测试类型* param $event*/public function test($event){$msg json_encode($event-data,256);$this-websocket-emit(callback, $msg);}
}
第四步websocket关闭事件
namespace app\index\listener;class WsClose
{/*** 事件监听处理** return mixed*/public function handle($event){//echo 已经断开了;}
}
第五步前端index.html
html
head
titlewebsocket/title
/headbody
h1websocket功能/h1input idmsg typetext/
button onclicksend()发送/buttonscriptvar ws new WebSocket(ws://你的ip:8080);ws.onopen function (){console.log(连接成功);var sendObj {};sendObj.type connect;sendObj.data connect success;console.log(msg,JSON.stringify(sendObj));ws.send(JSON.stringify(sendObj));}ws.onclose function () {console.log(连接失败)}ws.onmessage function (evt) {console.log(数据已接收,evt);}function send(){console.log(运行到这里了);var msg document.getElementById(msg).value;var sendObj {};sendObj.type mtest;sendObj.data msg;console.log(msg,JSON.stringify(sendObj));ws.send(JSON.stringify(sendObj));}
/script
/body
/html