0

在技​​术上是否可以运行多个在同一端口上侦听并使用子协议名称进行调度的 websocket 服务器?例如,一个处理“protocol1”的进程和另一个处理“protocol2”的进程。我的猜测是它不是,因为 TCP 不能有条件地接受连接,所以唯一的方法是某种套接字所有权转移。

4

2 回答 2

0

实际上,可以通过使用代理作为负载均衡器来实现,这不是我之前尝试管理的东西......所以我无法发布演示配置文件。

我知道 Apache 将允许您根据请求标头决定代理路径 - 这意味着您可以在转发数据之前检查子协议......但这主要是我从未测试过的概念性解决方案。

于 2015-11-25T20:19:30.127 回答
0

这个问题被标记为 WebSocket++,所以我将从该库的上下文中回答。

也许,这取决于你的意思。WebSocket++ 将让您构建一个可以在内部处理多个子协议的程序。WebSocket++ 有一个称为验证处理程序的预接受钩子。在验证处理程序中,您会看到客户端请求的子协议列表,并且可以选择您要接受的子协议(如果您的服务器不支持,则不接受)。

这与有条件地接受 TCP 连接本身不同,但可以让您有条件地接受 WebSocket 连接。一旦被接受,您的应用程序可以在打开的处理程序中检查选定的子协议,并选择使用哪个逻辑来处理连接。

基于 WebSocket++ 的程序可以同时处理多个子协议上的多个连接。如果你真的想要多个独立的进程来处理每个进程,那么最好的 WebSocket++ 能够做的是充当这些连接的代理。

于 2016-01-12T13:12:34.750 回答