2016-04-21 92 views
0

我工作的服务器,这是80端口如何在同一端口上运行套接字和websocket服务器?

我想使本地和WebSocket的客户端连接到我的服务器上的监听。

它只有在websockify运行在不同的端口并且将流量转发到套接字服务器时才有效。

不幸的是websockify没有很好的记录,也没有可用的教程。

我应该从哪里开始,如果我想创建一个只能监听一个端口的服务器,并且同时接受websocket和本地TCP套接字?

+0

同一端口同时? –

+0

是的,相同的端口,同一时间 –

回答

3

如果您的服务器正在侦听端口80上的连接,它是在说http吗?因为如果没有,请不要在端口80上进行监听:端口80已正确建立,因为它正在传输http流量。

接下来 - 一个IP地址和端口一起是端点的唯一标识符。如果远程客户端在端口80上连接到服务器,而不是目标IP和端口,则没有其他信息表明网络层必须识别哪个应用程序(侦听端口80)值得该数据包。由于提供多个IP地址非常困难 - 不可能通过NAT - 真正可用于将数据包路由到正确的侦听器的唯一信息是端口。所以你不能让两个应用程序在同一个端口上侦听。

最后,websockets像初始HTTP协商之后的本地套接字一样工作。这意味着,您可以使用websocksify而不是使用websocksify,这样您可以教您的本地服务器应用程序检测由websocket客户端进行连接的尝试,并可选择在进入“本地”模式之前执行初始协商。

Writing Websocket Servers给出了您的本地服务器需要实现的简要分类。

+0

我正在使用端口80,因为在某些网络上80和443以外的端口被禁用,所以这些客户端无法连接到服务器 –

+0

对于无知的系统管理员没有真正的防御:/ –

-2

如果你看一下WebSocket,你会发现它是一个TCP层的协议。因此,你的服务器套接字只能绑定一次到端口80,这取决于你使用普通的TCP,WebSocket还是你的自定义协议。没有什么魔法可以从WebSocket切换到TCP,反之亦然。

+0

是不是我downvote,但是你可以切换...魔术是HTTP连接头升级(记录在你参考链接),它允许从HTTP切换到WebSocket的TCP。 ..另请参见Sec-WebSocket-Version ... – mark

+0

感谢您指出,将阅读有关。 – karastojko

+0

您可以使用HTP。 WebSockets是HTTP的一个子协议。 – EJP

相关问题