GatewayWorker使用与原理
前言
想要成为一个出色的PHPrd,进阶之路便是毫无方向,异常艰辛,接下来我们就了解一下即时通讯中gatewayworker的使用方式以及工作原理。
一、GatewayWorker是什么?
gateway是一款出色的即时通讯框架。它是给予workerman 进行扩展的故满足workerman的所有使用方法。也是在tcp|ip协议基础上构建有效的长链接从而抛弃客户端进行轮询实现"长连接",
gateway常用于快速开发TCP长连接应用, 例如 app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等
二、安装以及启动(linux)
1,将压缩包打包上传到Linux服务器,并减压
2,进入目录文件 会看到start.php (启动文件)并执行 php start.php start
注 : linux 环境中配置php环境变量后才可使用 php start.php start,否则只能执行 php 环境目录 tart.php start
3,,启动会出现三个端口分别是
gateway 端口 --- 用来供外部连接构建长连接
register 端口 --- 用来注册内部通信端口 (用于 register 连接 gateway)
business 端口 --- 用来注册内容通信端口(business 与 gateway 进行数据通信)
注:
若三个端口配置成一致端口会导致端上与服务端构建长链接时时好时坏。
gateway端口必须外部可访问,需在服务云厂商安全组中打开以及在服务器的防火墙中允许通过
三、工作原理
1,gateway,register,business 各个进程启动
2,gateway和business向register连接注册
3,register 接受到 gateway的注册后,会将所有的注册存储到内存中
4,register 接受到 business的注册后, 把内存中的gateway的通讯地址发送business
5,business收到gateway的内部通讯地址并进行尝试连接以此构成 gateway, business, register 相互连接。
6,当gateway下线时,register收到下线通知后,然后将新的gateway内部连接通讯地址广播给buiness进行连接,
buiness 不在连接已下线的gateway地址。
7,至此Gateway与BusinessWorker通过Register已经建立起长连接
8,当客户端连接gateway时, gateway将信息传递给business,business进行业务处理进行onStartWorker, onConnect 事件,
最终连接成功后通过business中的onMessage事件
四、简单demo示例
此处长连接协议为websocket
gateway-worker 服务端
start_gateway.php 代码修改
use \Workerman\Worker;
// 自动加载类
require_once __DIR__ . '/../../vendor/autoload.php';
//
$gateway = new Gateway("websocket://x.x.x.x:8089"

本文详细介绍了GatewayWorker的使用方法,包括安装、启动流程、工作原理,通过示例演示了如何在WebSocket协议下搭建服务端,并深入剖析了uid绑定和内部通讯机制。适合进一步理解Workerman及其在即时通讯中的应用。
最低0.47元/天 解锁文章
4076

被折叠的 条评论
为什么被折叠?



