您好,欢迎访问一九零五行业门户网

TP5 如何整合 WorkerMan 以及 GatewayWorker

下面由workerman教程栏目给大家介绍tp5整合 workerman 以及 gatewayworker的方法,希望对需要的朋友有所帮助!
tp5整合gatewayworker
windows版安装
a)使用composer create-project topthink/think testtg,来安装thinkphp5.
b)进入thinkphp5的目录,此处为testtg,使用composer require workerman/gateway-worker-for-win 安装windows版本的gateway。
c)去官网下载windows版的gateway-worker,里面有demo。http://www.workerman.net/download
d)将下载的压缩包解压,将applications/yourapp中的文件全部复制到thinkphp5目录application里面的任意文件夹,这里取名为push。
e)将解压后的文件夹中的start_for_win.bat复制到thinkphp5的根目录,即与application同级的目录。
f)右键start_for_win.bat,点编辑,将里面的目录改成自己的目录,这里改为
php application\push\start_register.php application\push\start_gateway.php application\push\start_businessworker.phppause
g)保存退出。双击运行。
linux版安装
a)使用composer create-project topthink/think testtg,来安装thinkphp5.
b)进入thinkphp5的目录,此处为testtg,使用composer require workerman/gateway-worker 安装linux版本的gateway。
c)去官网下载linux版的gateway-worker,里面有demo。http://www.workerman.net/download
d)将下载的压缩包解压,将applications/yourapp中的文件全部复制到thinkphp5目录application里面的任意文件夹,这里取名为push。
e)将解压后的文件夹中的start.php复制到thinkphp5的根目录,即与application同级的目录。
f)将start.php文件中最后部分forearch循环括号内的路径改为自己的正确路径。
在命令行php start.php start 启动。
tp5整合wrokerman
windows版安装
a)使用composer create-project topthink/think testtw,来安装thinkphp5.
b)进入thinkphp5根目录,即testtw。先使用composer require topthink/think-worker,
再使用composer require workerman/workerman-for-win,来安装workerman。安装成功之后删除vendor\workerman\workerman。
c)在thinkphp5根目录(即与application同级目录)创建server.php,编辑一下内容。
<?phpefine('app_path', __dir__ . '/application/');define('bind_module','push/worker');// 加载框架引导文件require __dir__ . '/thinkphp/start.php';
d)创建workerman的controller,命名为worker.php。在application/push/controller,目录不存在自行创建。添加以下内容:
protected $socket = 'websocket://127.0.0.1:2346'其中127.0.0.1为socket服务器所在的ip地址。此处监听本机的2346端口。
<?phpnamespace app\push\controller;use think\worker\server;class worker extends server{ protected $socket = 'websocket://127.0.0.1:2346'; /** * 收到信息 * @param $connection * @param $data */ public function onmessage($connection, $data) { $connection->send('我收到你的信息了'); } /** * 当连接建立时触发的回调函数 * @param $connection */ public function onconnect($connection) { } /** * 当连接断开时触发的回调函数 * @param $connection */ public function onclose($connection) { } /** * 当客户端的连接上发生错误时触发 * @param $connection * @param $code * @param $msg */ public function onerror($connection, $code, $msg) { echo "error $code $msg\n"; } /** * 每个进程启动 * @param $worker */ public function onworkerstart($worker) { }}
e)在命令行下运行,启动监听服务php server.php
f)任意位置新建一个html文件。其中内容为:
<meta http-equiv="content-type" content="text/html; charset=utf-8" /><script>ws = new websocket("ws://localhost:2346");ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom");};ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data);};</script>
g)保存,用浏览器打开,就可以看到链接成功。
linux版安装
a)只需将windows版安装的b)步骤中的composer命令只执行:composer require topthink/think-worker。即可,其余步骤不变。
简单使用gatewayworker
<script type="text/javascript">/** * 与gatewayworker建立websocket连接,域名和端口改为你实际的域名端口, * 其中端口为gateway端口,即start_gateway.php指定的端口。 * start_gateway.php 中需要指定websocket协议,像这样 * $gateway = new gateway(websocket://0.0.0.0:7272); */ws = new websocket("ws://127.0.0.1:8282");// 服务端主动推送消息时会触发这里的onmessagews.onmessage = function(e){ // json数据转换成js对象 var bindurl = "{:url('push/bindclientid')}"; var data = e.data; var type = data.type || ''; switch(type){ // events.php中返回的init类型的消息,将client_id发给后台进行uid绑定 case 'init': // 利用jquery发起ajax请求,将client_id发给后端进行uid绑定 $.post(bindurl, {client_id: data.client_id}, function(data){ }, 'json'); break; // 当mvc框架调用gatewayclient发消息时直接alert出来 default : var text = e.data; var str = '<li style="width:100%; height:60px; border:1px solid #000">' +text +'</li>'; $('#message_box').append(); // alert(e.data); }};</script>class push{ public function helloaction () { $uid = $_get['uid']; session('uid', $uid); $view = new view; return $view->fetch(); } public function bindclientidaction () { $client_id = $_post['client_id']; // 设置gatewayworker服务的register服务ip和端口,请根据实际情况改成实际值 gateway::$registeraddress = '127.0.0.1:1238'; $binduid = session('uid'); // 假设用户已经登录,用户uid和群组id在session中 // client_id与uid绑定 gateway::binduid($client_id, $binduid); // 加入某个群组(可调用多次加入多个群组) // gateway::joingroup($client_id, $group_id); } public function ajaxsendmessageaction () { $message = $_post['message']; // 设置gatewayworker服务的register服务ip和端口,请根据实际情况改成实际值 gateway::$registeraddress = '127.0.0.1:1238'; gateway::sendtoall($message); }}
以上就是tp5 如何整合 workerman 以及 gatewayworker的详细内容。
其它类似信息

推荐信息