thinkphp6+workerman的安装和websocket使用
2022-11-24 11:10:29
173
{{single.collect_count}}

tp6+workerman简单实现通讯

首先通过 composer 安装

composer require topthink/think-worker

think-worker默认帮你安装了workman。

注意:tp5.1运行这句的话会报错,因为最新版的think-worker是要tp6框架的,tp5.1要找以前的版本

config  worker_server.php 更改配置

return [    'worker_class'   => 'app\index\controller\Worker', // 自定义Workerman服务类名 支持数组定义多个服务];
<?phpnamespace app\index\controller;use think\facade\Db;use think\worker\Server;use Workerman\Lib\Timer;define('HEARTBEAT_TIME', 20);// 心跳间隔55秒class Worker extends Server{protected $socket = 'http://0.0.0.0:2345';public function __construct(){parent::__construct();$this->onMessage();// 或者这样调用$this->worker->onWorkerStart = function($worker){echo "Worker starting...\n";};}/** * 收到信息 * @param $connection * @param $data*/public function onMessage(){$this->worker->onMessage = function($connection, $data){dump($data);$connection->send($data);};} }
php think worker:server 在命令行启动服务端

html:

<!DOCTYPE html><html><head><title>HTML5</title><meta charset="utf-8" /><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script><script>$(function() {var socket;var readyState = ["connecting", "connected", "closing", "closed"];/* 打开连接事件 */$("button:eq(0)").click(function() {try { /* 连接 *///socket = new WebSocket("ws://39.96.9.241:6789"); socket = new WebSocket("ws://127.0.0.1:2345"); /* 绑定事件 */ socket.onopen = function() { $("#msg").html("连接成功..."); }; socket.onmessage = function(e) { $("#msg").html($("#msg").html() + "<br />" + e.data); };socket.onclose = function() { $("#msg").html($("#msg").html() + "<br />关闭连接..."); };} catch(exception) {$("#msg").html($("#msg").html() + "<br />有错误发生");}});/* 发送数据事件 */$("button:eq(1)").click(function() {/* 检查文本框是否为空 */if($("#data").val() == "") {alert("请输入数据!");return;}try {socket.send($("#data").val());$("#msg").html($("#msg").html() + "<br />发送数据:" + $("#data").val());} catch (exception) {$("#msg").html($("#msg").html() + "<br />发送数据出错");}/* 清空文本框 */$("#data").val("");});/* 断开连接 */$("button:eq(2)").click(function() {socket.close();});});</script></head><body><h1>WebSocket示例</h1><input type="text" id="data" /><button>打开连接</button><button>发送数据</button><button>关闭连接</button><p id="msg"></p></body></html>

参考地址:http://www.ainqs.com/article/s/33.html

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}