Blogger Information
Blog 91
fans 2
comment 4
visits 128303
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
TP5整合 WorkerMan 以及 GatewayWorker
夏日的烈风的博客
Original
1612 people have browsed it

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/downloadd)将下载的压缩包解压,将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.php
Pause
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/downloadd)将下载的压缩包解压,将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,编辑一下内容。<?php efine('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);
   }
}


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
亮亮哥 2019-06-21 16:33:04
workerman视频教程,开发IM在线客服系统(使用gatewayworker): https://study.163.com/course/courseMain.htm?share=2&shareId=400000000388007&courseId=1005015012&_trace_c_p_k2_=aa565c016f79450b8e43ffb1f245c434
1 floor
Author's latest blog post