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>