WebSocket-一个还是多个?

WebSocket-一个还是多个?,websocket,tomcat7,Websocket,Tomcat7,我玩WebSockets是为了好玩,在后端运行Tomcat。如果我想与客户机共享多个数据流,那么最好是每个流有一个WebSocket,还是通过一个共享WebSocket对它们进行多路复用 每个流有一个WebSocket显然更容易。我不需要客户端和服务器上的高级逻辑将所有数据汇集到一个管道中,也不需要数据格式中的任何开销来指示每个帧的源/目标 但是在一个客户端页面上使用多个Websocket(5-10个)有什么缺点吗?我听说(但从未实际测试过)一些浏览器可能会阻止从同一个选项卡/页面快速创建Web

我玩WebSockets是为了好玩,在后端运行Tomcat。如果我想与客户机共享多个数据流,那么最好是每个流有一个WebSocket,还是通过一个共享WebSocket对它们进行多路复用

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

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

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


然而,由于WebSockets是基于消息的(而不是原始流),因此在一个连接上对流量进行多路复用/解复用并不困难。您可以在每条消息的开头添加一个字符来指示哪个流(或者如果您正在发送/接收JSON映射,那么只需在每条消息中添加另一个字段即可)。

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

好的一点。此外,像chrome这样的浏览器也限制了并发连接的数量!虽然我的特定用例最多只需要少数用户,但缩放问题是共享一个websocket而不是拥有多个专用websocket的一个重要方面,也是一个明确的理由。websocket连接使用端口80,如上所述“通信是通过TCP端口80完成的,这对于那些使用防火墙阻止非web Internet连接的环境是有益的。”端口数量有限不会成为问题。