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

标签 c++ sockets websocket listen websockify

我在一个服务器上工作,它正在监听 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/

相关文章:

带有 SockJs 的 Spring Websocket 从 XHR 流切换到 Websocket

c++ - 用于(仅)插入和迭代的适当标准容器

c++ - 在 QCalendarWidget 中禁止选择将来的日期

java - 将输入流重定向到套接字的输出流

c++ - 在 C++ 中使用 zeromq 将序列化的 Mat 对象发送到另一台计算机

c++ - 发送到 : Network unreachable

javascript - 解析通过 WebSocket 接收到的 JSON 结果出错

java - http 服务器将如何处理 html5 网络套接字?

c++ - 在 VS 2013 中使用空格键提交 C++ Intellisense 建议

c++ - 如何使用区分大小写的元素对 std::list 进行排序?