TP5 集成 WorkerMan 以及 GatewayWorker 做实时聊天

[TOC]

一. 基础

1. workerman

workerman是国人开发的良心高性能的PHP socket 服务器框架,在全球最大同性交友平台gayHub的star都4K多,可以想象是多么的牛X。

可以单独部署,也可以整合进MVC的框架(TP,laravel等),可以说非常实用,并发效果也好。

官网地址: * http://www.workerman.net/workerman

gayhub地址: * https://github.com/walkor/workerman/

2. gateway-worker

gateway-worker(后面直接称gateway)是基于 workerman开发的TCP长连接框架,用于快速开发TCP长连接应用。

在线聊天一般都是实用长连接保持通信,使用 workerman虽然能够做到同样的效果,但是gateway更加的方便快捷。

(轮询构建的聊天室已经OUT了,实在是太...)

gayhub地址: * https://github.com/walkor/GatewayWorker

3. gatewayClient

gateClient是用来辅助 workerman或者是gateway进行用户分组以及向用户发送信息的组件,同时,能够快速便捷的将原有系统的uid和clientid绑定起来。

gayhub地址: * https://github.com/walkor/GatewayClient

二. 安装类库

1. workerman

  • linux

composer require topthink/think-worker

  • WINDOWS

composer require workerman/workerman-for-win

如果用的是TP5.0.X 安装的时候可能不成功,因为composer默认安装的最新版,也就是workerm的2.0.X版,所以需要 composer require topthink/think-worker v1.0.1 加上对应的版本号

2. gateway-worker

  • linux

composer require gateway-worker

  • WINDOWS

composer require gateway-worker-for-win

3. gatewayClient

composer require workerman/gatewayclient

三. 集成

  • ### workerman

主要做信息推送

TP5相关文档:https://www.kancloud.cn/manual/thinkphp5/235128 具体操作 1. 在项目根目录新建server.php文件,文件内容为:

``` send('我收到你的信息了'); }

/**
 * 当连接建立时触发的回调函数
 * @param $connection
 */
public function onConnect($connection)
{
    $connection->send('正在连接');
}

/**
 * 当连接断开时触发的回调函数
 * @param $connection
 */
public function onClose($connection)
{
    $connection->send('连接关闭');
    $connection->close();
}

/**
 * 当客户端的连接上发生错误时触发
 * @param $connection
 * @param $code
 * @param $msg
 */
public function onError($connection, $code, $msg)
{
    echo "error $code $msg\n";
}

/**
 * 每个进程启动
 * @param $worker
 */
public function onWorkerStart($worker)
{

}

}

5.上面都弄好后,就可以到项目目录里,启动监听服务 php server.php ``` 6.运行成功后会出现类型于下图,如果报错可能是防火墙或端口没开放等,具体问题具体分析

7.客户端可以连接方式 ws = new WebSocket("ws://127.0.0.1:2346"); ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom"); }; ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data); };

  • ### gateway-worker

主要做单聊,群聊和广播

由于通过composer安装时只下载了核心类,我们可以下载一些demo来进行配置 1. 去官网下载Windows版的gateway-worker,里面有demo。http://www.workerman.net/download 2. 将下载的压缩包解压,将Applications/Yourapp中的文件全部复制到thinkphp5目录application/push里面 3. 将解压后的文件夹中的startforwin.bat复制到thinkphp5的根目录,即与application同级的目录 4. 右键startforwin.bat,点编辑,将里面的目录改成自己的目录,这里改为 php application\push\start_register.php application\push\start_gateway.php application\push\start_businessworker.php Pause 5. 保存退出。双击运行。 6. linux基本一至,但不用编辑startforwin.bat文件,直接使用start.php文件 7. 成功运行后会出现如下图

via:https://blog.csdn.net/qq_14913213/article/details/77184074

客户端连接成功后可以通过TP的MVC模式进行发送信息 ```

你可能感兴趣的:(TP5 集成 WorkerMan 以及 GatewayWorker 做实时聊天)