网络套接字 - 一个或多个



我玩WebSockets是为了好玩,在后端运行Tomcat。 如果我想与客户端共享多个数据流,是每个流有一个 WebSocket 更好,还是将它们多路复用在一个共享的 WebSocket 上?

每个流有一个 WebSocket 似乎更容易。 我不需要客户端和服务器上的高级逻辑将所有数据汇集到一个管道中,也不需要数据格式中的任何开销来指示每个帧的源/目标。

但是在一个客户端页面上使用多个 WebSocket (5-10) 有什么缺点吗?

如果要允许大量多个并发用户,应尽量减少每个用户的连接数,因为 TCP/IP 服务器可以同时打开的连接数不是无限的。同时连接的数量在Web服务器配置中受到限制,受操作系统的限制,最后但并非最不重要的是受IP协议本身的架构限制(只有2^16个端口)。

我听说过传言(但从未实际测试过),某些浏览器可能会限制从同一选项卡/页面快速创建 Websocket 连接。如果这是真的,那就是阻止恶意Javascript尝试使用WebSockets进行端口扫描。但是,除此之外应该没有任何问题。

但是,由于 WebSockets 是基于消息的(而不是原始流),因此通过一个连接进行复用/解复用流量并不困难。您可以在每条消息的开头添加一个字符以指示哪个流(或者,如果您要发送/接收 JSON 映射,则只需向每条消息添加另一个字段)。

相关内容

最新更新