从同一个客户端到同一个服务器有两个不同的WebSocket连接有什么好处吗?对我来说,这似乎是一个糟糕的设计选择,但有什么理由/在哪里应该工作得更好?
uujelgoq1#
有几个原因可以解释为什么你想这么做,但它们可能不太常见(至少现在还不常见):
我肯定还有其他的原因,但这就是我能想到的全部。
j91ykkif2#
我发现,当您只订阅由服务器管理的某些对象的更新时,它可以使客户端逻辑简单得多。您可以只为每个元素打开一个套接字,而不是为单个通道设计一个自定义订阅协议。假设您通过REST API在
http://myserver/api/some-elements
字符串你可以使用一个socket url订阅单个元素的更新,如下所示:
ws://myserver/api/some-elements/42/updates
型当然,人们可以争辩说,这不适合复杂的页面。然而,对于小型和简单的应用程序,它可能会使您的生活变得更加轻松。
hc8w905p3#
除了什么kanaka said,可能还有另一个问题。例如,您的APP是这样配置的:每隔30秒,WebSocket网络就有一次乒乓,服务器根据它来确定是否有来自客户端的响应。您开始通过WebSocket上传大量数据,例如1Gb,这可能需要几分钟,具体取决于互联网连接速度。服务器发送一个ping,客户端接收到它并发送一个pong,但是WebSocket通道已经忙碌传输数据。服务器未收到pong并重置连接。数据传输中断。因此,根据其功能分离WebSocket通道是有意义的。一个应该用于客户端信令和系统数据,例如,已经上传到服务器的量,另一个专门用于传输大数据。
3条答案
按热度按时间uujelgoq1#
有几个原因可以解释为什么你想这么做,但它们可能不太常见(至少现在还不常见):
我肯定还有其他的原因,但这就是我能想到的全部。
j91ykkif2#
我发现,当您只订阅由服务器管理的某些对象的更新时,它可以使客户端逻辑简单得多。您可以只为每个元素打开一个套接字,而不是为单个通道设计一个自定义订阅协议。
假设您通过REST API在
字符串
你可以使用一个socket url订阅单个元素的更新,如下所示:
型
当然,人们可以争辩说,这不适合复杂的页面。然而,对于小型和简单的应用程序,它可能会使您的生活变得更加轻松。
hc8w905p3#
除了什么kanaka said,可能还有另一个问题。例如,您的APP是这样配置的:每隔30秒,WebSocket网络就有一次乒乓,服务器根据它来确定是否有来自客户端的响应。您开始通过WebSocket上传大量数据,例如1Gb,这可能需要几分钟,具体取决于互联网连接速度。服务器发送一个ping,客户端接收到它并发送一个pong,但是WebSocket通道已经忙碌传输数据。服务器未收到pong并重置连接。数据传输中断。
因此,根据其功能分离WebSocket通道是有意义的。一个应该用于客户端信令和系统数据,例如,已经上传到服务器的量,另一个专门用于传输大数据。