0

情况是我用这样的 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 服务器可以接收的媒体文件或文本消息?

谢谢

4

1 回答 1

1

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

套接字服务器可以保持许多连接(例如我的套接字服务器可以保持正常的一天12000)

我的意见:

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