如何在同一个端口上 运行 一个套接字和一个 websocket 服务器?
How to run a socket and a websocket server on the same port?
我在服务器上工作,它正在侦听端口 80
我想让本机客户端和 websocket 客户端都能连接到我的服务器。
仅当 websockify
在不同的端口运行,并将流量转发到套接字服务器时才有效。
不幸的是 websockify
没有很好的文档,也没有可用的教程。
如果我只想创建一个服务器,它只监听一个端口,并且接受 websocket 和本机 TCP 套接字,我应该从哪里开始?
如果你看一下 WebSocket,你会发现它是一个基于 TCP 层的协议。因此,您的服务器套接字只能绑定到端口 80 一次,您可以使用纯 TCP、WebSocket 或您的自定义协议。没有什么魔法可以从 WebSocket 切换到 TCP,反之亦然。
如果您的服务器正在侦听端口 80 上的连接,它是在谈论 http 吗?因为如果没有,就不要在端口 80 上监听:端口 80 已被确定为承载 http 流量。
接下来 - IP 地址和端口一起是端点的唯一标识符。如果远程客户端在端口 80 上连接到您的服务器,除了目标 ip 和端口之外,网络层没有其他信息可以识别哪个应用程序侦听端口 80 应该得到数据包。鉴于提供多个 IP 地址非常困难——不可能通过 NAT——唯一真正可用于将数据包路由到正确侦听器的信息是端口。所以你不能让两个应用程序监听同一个端口。
最后,在初始 HTTP 协商之后,websocket 的行为类似于本机套接字。这意味着,除了使用 websocksify
,您可以教您的本机服务器应用程序检测 websocket 客户端的连接尝试,并可选择在进入 'native' 模式之前执行初始协商。
Writing Websocket Servers 简要说明了您的本机服务器需要实现的功能。
我在服务器上工作,它正在侦听端口 80
我想让本机客户端和 websocket 客户端都能连接到我的服务器。
仅当 websockify
在不同的端口运行,并将流量转发到套接字服务器时才有效。
不幸的是 websockify
没有很好的文档,也没有可用的教程。
如果我只想创建一个服务器,它只监听一个端口,并且接受 websocket 和本机 TCP 套接字,我应该从哪里开始?
如果你看一下 WebSocket,你会发现它是一个基于 TCP 层的协议。因此,您的服务器套接字只能绑定到端口 80 一次,您可以使用纯 TCP、WebSocket 或您的自定义协议。没有什么魔法可以从 WebSocket 切换到 TCP,反之亦然。
如果您的服务器正在侦听端口 80 上的连接,它是在谈论 http 吗?因为如果没有,就不要在端口 80 上监听:端口 80 已被确定为承载 http 流量。
接下来 - IP 地址和端口一起是端点的唯一标识符。如果远程客户端在端口 80 上连接到您的服务器,除了目标 ip 和端口之外,网络层没有其他信息可以识别哪个应用程序侦听端口 80 应该得到数据包。鉴于提供多个 IP 地址非常困难——不可能通过 NAT——唯一真正可用于将数据包路由到正确侦听器的信息是端口。所以你不能让两个应用程序监听同一个端口。
最后,在初始 HTTP 协商之后,websocket 的行为类似于本机套接字。这意味着,除了使用 websocksify
,您可以教您的本机服务器应用程序检测 websocket 客户端的连接尝试,并可选择在进入 'native' 模式之前执行初始协商。
Writing Websocket Servers 简要说明了您的本机服务器需要实现的功能。