技术上是否可以运行多个在同一端口上侦听并使用子协议名称进行调度的websocket服务器?例如。一个处理“protocol1”的进程和另一个处理“protocol2”的进程。我的猜测是,它不是,因为TCP无法有条件地接受连接,所以唯一的方法是某种套接字所有权转移。
答案 0 :(得分:0)
实际上,可以通过使用代理作为负载均衡器来实现,这是我之前尝试管理的东西......所以我无法发布演示配置文件。
我知道Apache将允许您根据请求标头决定代理路径 - 这意味着您可以在转发数据之前检查子协议......但这主要是我从未测试过的概念性解决方案。
答案 1 :(得分:0)
这个问题被标记为WebSocket ++,所以我将从该库的上下文中回答。
也许,具体取决于你的意思。 WebSocket ++将允许您构建一个可以在内部处理多个子协议的程序。 WebSocket ++有一个称为验证处理程序的预接受挂钩。在验证处理程序中,您将看到客户端已请求的子协议列表,并可选择您要接受的子协议(如果您的服务器不支持,则为无)。
这与有条件地接受TCP连接本身不同,但允许您有条件地接受WebSocket连接。一旦接受,您的应用程序就可以检查打开处理程序中选定的子协议,并选择用于处理连接的逻辑。
基于WebSocket ++的程序可以同时处理多个子协议上的多个连接。如果你真的想要多个独立的进程处理每个进程,那么最好的WebSocket ++能够做的就是充当这些连接的代理。