您可以通过同一端口处理多个不同的协议,但有一些警告:
服务器必须以某种方式检测(或协商)客户端希望说出的协议。您可以将单独的端口视为检测客户端希望使用的协议的常规方法。
实际上,只有一个服务器进程可以在该端口上侦听。该服务器可能仅用于检测协议类型,然后转发到其他多个服务器,但每个端口均由单个服务器进程拥有。
您不能在服务器首先讲话的情况下支持多种协议(因为无法检测到客户端的协议)。您可以支持具有多个客户端优先协议的单个服务器优先协议(通过在接受之后添加一小段延迟以查看客户端是否将发送数据),但这有点不可思议。
WebSocket协议的一个明确的设计目标是允许WebSocket和HTTP协议共享同一服务器端口。最初的WebSocket握手是HTTP兼容的升级请求。
所述websockify服务器/桥接器是可以说同样的端口上5个不同的协议的服务器的一个示例:HTTP,HTTPS(加密的HTTP),WS(的WebSockets),WSS(加密的WebSockets)和Flash政策响应。服务器将窥视传入请求的第一个字符,以确定它是否经过TLS加密(HTTPS或WSS)或是否以“
<”开头(Flash策略请求)。如果这是Flash策略请求,则它将读取请求,响应并关闭连接。否则,它将读取HTTP握手(加密或不加密),并且Connection和Upgrade标头确定它是WebSocket请求还是纯HTTP请求。
免责声明:我做了websockify



