基于子策略分派websocket连接

基于子策略分派websocket连接,websocket,websocket++,Websocket,Websocket++,从技术上讲,是否可以运行多个websocket服务器,这些服务器在同一端口上侦听并使用Subtocol名称进行调度?例如,一个处理“protocol1”的流程和另一个处理“protocol2”的流程。我的猜测是不是,因为TCP不能有条件地接受连接,所以唯一的方法是某种套接字所有权转移。实际上,使用代理作为负载平衡器是可能的,这不是我以前尝试过的。。。所以我不能发布演示配置文件 我知道Apache将允许您根据请求头决定代理路径-这意味着您可以在转发数据之前检查子协议。。。但这主要是一个我从未测试过

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

实际上,使用代理作为负载平衡器是可能的,这不是我以前尝试过的。。。所以我不能发布演示配置文件


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

这个问题被标记为WebSocket++,因此我将从该库的上下文中进行回答

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

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


基于WebSocket++的程序可以同时处理多个子程序上的多个连接。如果您确实需要多个独立的进程来处理每个进程,那么WebSocket++能够做的最好的事情就是充当这些连接的代理。

是的,nginx提供了WebSocket转发/反向代理的示例。理想情况下,我会避免数据被复制的另一个间接层次。你说的子程序是什么意思?我制作了一个基于asio的库,它处理http、websocket和任何其他自定义协议,基于客户端发送的第一个“请求字符串”,是吗?使用websocket协议,可以通过名称()请求子脚本,例如“聊天”。我希望有一个只接受指定子目录连接的进程。