gatewayWorker支持Channel分布式通讯组件吗?

l928112133

gatewayWorker支持Channel分布式通讯组件吗?
我看手册里面的例子都是Workerman的,没有gatewayworker的
能举个例子吗?谢谢了

2059 1 0
1个回答

keytehu

http://doc.workerman.net/components/channel-client-on.html
用法一样吧。
start_gateway.php 所在目录里新建一个 start_channel.php。

require_once __DIR__ . '/../../vendor/autoload.php';

$channel_server = new Channel\Server('0.0.0.0', 2206);

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
    Worker::runAll();
}

Events.php 里

class Events {
    public static function onWorkerStart()
    {
        // Channel客户端连接到Channel服务端
        Channel\Client::connect('127.0.0.1', 2206);
        // 订阅broadcast事件,并注册事件回调
        Channel\Client::on('broadcast', function($event_data)use($worker){
            // 向当前worker进程的所有客户端广播消息
            foreach($worker->connections as $connection)
            {
                $connection->send($event_data);
            }
        });
    }

    public static function onMessage ($client_id, $data)
    {
       // 将客户端发来的数据当做事件数据
       $event_data = $data;
       // 向所有worker进程发布broadcast事件
       \Channel\Client::publish('broadcast', $event_data);
    }
}

试下吧

  • l928112133 2020-03-03

    好的,我试下

  • l928112133 2020-03-03

    你好,我在一个服务器上试了可以,但是我把A做服务Server,B做Client,B接受不到数据

  • keytehu 2020-04-07

    B连server的时候 Channel\Client::connect('127.0.0.1', 2206); 里的127.0.0.1要改成实际ip。并且A要把安全组和防火墙的2206端口开放出来。

年代过于久远,无法发表回答
🔝