gateway模式下 workman可以与 socket.io 一起搭配吗

tablecell

https://github.com/walkor/gatewayworker 这上面只有个websoket的例子

搜了一下,但没有找到 gateway模式 与socket.io 一起通信的例子

3795 5 0
5个回答

walkor

gateway 和 socket.io是两个相似的服务。
使用其中一个即可,没必要全用上。

进程间/服务器间通讯可以参考 Channel分布式消息通讯组件
http://doc3.workerman.net/component/channel.html

  • 暂无评论
tablecell

socket.io 单机可以使用,但现在是想用多台socket.io 服务器做负载分担, 这种场景可以用gateway吗?

  • 暂无评论
walkor

gateway是可以分布式部署的,但是gateway的分布式和socket.io没有任何关系。

  • tablecell 2016-12-13

    也就是说 如果要支持非websocket客户端(比如ie8) 的聊天需求,是没法用gateway做分布式的 那这种需求,有什么解决方案吗? Channel 这个方案可以解决 非websocket客户端+分布式 这种需求场景吗?

walkor

也就是说 如果要支持非websocket客户端(比如ie8) 的聊天需求,是没法用gateway做分布式的 那这种需求,有什么解决方案吗?

前端用web-socket-js库(参考http://www.workerman.net/workerman-chat),低版本浏览器会自动使用flash socket兼容websocket。

Channel 这个方案可以解决 非websocket客户端+分布式 这种需求场景吗?

可以

  • 暂无评论
tablecell

composer require "workerman/workerman" "workerman/channel" "workerman/phpsocket.io"
安装socket.io和channel以后  php Server.php start 可以启动
但是客户端怎么写?这里要同时处理socket.io连接和 chanel订阅的事件处理  
clent.php

<?php
use Workerman\Worker;
use PHPSocketIO\SocketIO;

$io = new SocketIO(8021);
$io->on('connection', function($socket)use($io){
  $socket->on('chat message', function($msg)use($io){
    $io->emit('chat message', $msg);
  });
});
$worker = new Worker($io);
$worker->onWorkerStart = function()
{
 .... .

这样写运行
php client start 报错

  • 暂无评论
年代过于久远,无法发表回答
🔝