【问题标题】:How to use Rachet to create multiple servers on a single machine如何使用 Ratchet 在一台机器上创建多个服务器
【发布时间】:2017-02-18 00:52:24
【问题描述】:

情况是我用这样的 shell 脚本启动了一个 Rachet 套接字服务器

$webSocketServer = new WsServer(new Chat());
$originCheck = new OriginCheck($webSocketServer, ['xdomain.com']);

$server = IoServer::factory(
    new HttpServer($originCheck), 8080);
$server->run();

我已经有一个使用 AngularJs Websocket 服务的客户端构建。 到目前为止一切正常。

问题 到目前为止,您可以看到我只是在终端中手动运行此脚本,该终端在端口 8080 上运行此服务器。

但我想要实现的是创建一个用户生成的聊天室。

从某种意义上说,当用户访问 xdomain.com 时。他可以选择创建一个聊天室。他单击按钮,它将访问我的服务器。我的服务器应该为该用户创建一个新的套接字服务器并给他一个密码/链接。用户将此代码发送给他的朋友。

当他们的朋友访问 xdomain.com 时,他们会看到两个选项

1 - 加入房间(他们必须提供从他朋友那里得到的代码) 2 - 创建一个聊天室(这将与我上面描述的方式相同)

现在我不确定这个架构。是好/坏/可能/不可能。

一台 Rachet Socket 服务器能够处理多少个连接?

对于创建聊天室的每个请求,我的脚本都会在一个新的可用随机端口上创建一个新的 Rachet Socket 服务器。假设这个站点变得非常流行,我的 vps 是否能够在不同的端口上打开这么多套接字服务器?我有这么多可用的端口吗?

还有,

在单个聊天室(Socker 服务器)上,用户是否能够传输 Socket 服务器可以接收的媒体文件或文本消息?

谢谢

【问题讨论】:

    标签: php sockets tcp reactphp


    【解决方案1】:

    为新房间创建套接字服务器 - 这是个坏主意。 首先,最大端口数为 65535 + 文件描述符限制 (cat /proc/sys/fs/file-max)

    Socket服务器可以保持很多连接(例如我的socket-server可以保持正常的一天12000)

    我的看法:

    1. 创建一个socket-server(如果你需要很多连接,你可以创建2-3个socket-servers)
    2. 创建平衡器(它可以为客户端返回socker-server端口)
    3. 安装 ZMQ
    4. 从 ZMQ 接收新消息并推送到客户端。
    5. 客户端正在写入消息,此消息正在推送到 ZMQ,socket-server 正在接收消息并将一条消息推送到客户端。
    6. 如果您需要推送文件 - 将其推送到 http 服务器上,并在 ZMQ 中写入有关文件的消息

    【讨论】:

      猜你喜欢
      • 2012-12-05
      • 2014-10-28
      • 2017-06-09
      • 2017-03-27
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多