如何在同一个端口上运行套接字和websocket服务器?

时间:2016-04-21 11:35:51

标签: c++ sockets websocket listen websockify

我正在服务器上,正在侦听端口80

我想启用native和websocket客户端连接到我的服务器。

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

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

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

2 个答案:

答案 0 :(得分:3)

如果您的服务器正在侦听端口80上的连接,它是否在谈论http?因为如果没有,就不要在端口80上监听:端口80已经建立为携带http流量。

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

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

Writing Websocket Servers简要介绍了您的本机服务器需要实现的内容。

答案 1 :(得分:-2)

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