我在一个服务器上工作,它正在监听 80 端口
我想让 native 和 websocket 客户端都能够连接到我的服务器。
只有当 websockify
在不同的端口运行并将流量转发到套接字服务器时,它才有效。
不幸的是 websockify
没有很好的文档,也没有可用的教程。
如果我只想创建一个服务器,它只监听一个端口,并且接受 websocket 和 native TCP 套接字,我应该从哪里开始?
最佳答案
如果您的服务器正在监听端口 80 上的连接,它是在谈论 http 吗?因为如果没有,就不要在端口 80 上监听:端口 80 已被确定为承载 http 流量。
下一步 - IP 地址和端口一起是端点的唯一标识符。如果远程客户端在端口 80 上连接到您的服务器,除了目标 ip 和端口之外,网络层没有其他信息可以识别哪个应用程序监听端口 80 应该得到数据包。鉴于提供多个 IP 地址非常困难——不可能通过 NAT——唯一真正可用于将数据包路由到正确监听器的信息是端口。所以你不能让两个应用程序监听同一个端口。
最后,在初始 HTTP 协商之后,websocket 的行为类似于 native 套接字。这意味着,您可以不使用 websocksify
,而是教您的 native 服务器应用程序检测 websocket 客户端的连接尝试,并可选择在进入“ native ”模式之前执行初始协商。
Writing Websocket Servers简要说明您的 native 服务器需要实现什么。
关于c++ - 如何在同一端口上运行套接字和 websocket 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36768385/