我正在使用正在侦听端口 80 的服务器
我想让本机和 websocket 客户端都连接到我的服务器。
只有websockify
在不同的端口上运行时,它才有效,并将流量转发到套接字服务器。
不幸websockify
的是没有很好的文档记录,也没有可用的教程。
如果我只想创建一个服务器,它只监听一个端口,并且接受 websocket 和本机 TCP 套接字,我应该从哪里开始?
我正在使用正在侦听端口 80 的服务器
我想让本机和 websocket 客户端都连接到我的服务器。
只有websockify
在不同的端口上运行时,它才有效,并将流量转发到套接字服务器。
不幸websockify
的是没有很好的文档记录,也没有可用的教程。
如果我只想创建一个服务器,它只监听一个端口,并且接受 websocket 和本机 TCP 套接字,我应该从哪里开始?
如果您的服务器正在侦听端口 80 上的连接,它是在说 http 吗?因为如果不是,请不要在端口 80 上监听:端口 80 已被确立为承载 http 流量。
接下来 - ipaddress 和端口一起是端点的唯一标识符。如果远程客户端在端口 80 上连接到您的服务器,除了目标 ip 和端口之外,网络层没有其他信息可以确定哪个应用程序侦听端口 80,值得数据包。鉴于提供多个 IP 地址非常困难 - 通过 NAT 不可能 - 真正可用于将数据包路由到正确侦听器的唯一信息是端口。所以你不能让两个应用程序在同一个端口上监听。
最后,在初始 HTTP 协商之后,websocket 的行为类似于本机套接字。这意味着websocksify
,您可以教您的本地服务器应用程序检测 Websocket 客户端的连接尝试,并可选择在进入“本地”模式之前执行初始协商,而不是使用 。
编写 Websocket 服务器简要介绍了您的本机服务器需要实现的内容。
如果您看一下WebSocket,您会发现它是 TCP 层之上的协议。因此,您的服务器套接字只能绑定一次到端口 80,这取决于您是使用普通 TCP、WebSocket 还是您的自定义协议。没有魔法可以从 WebSocket 切换到 TCP,反之亦然。