2012-02-12 92 views
33

从同一个客户端有两个不同的websocket连接到同一个服务器有什么好处吗?对我来说,这似乎是一个糟糕的设计选择,但是有什么理由/为什么它应该更好地工作?多个websocket连接

+0

REQUEST_URI是否也相同? – 2012-02-12 11:23:18

+0

@Shiplu嗯。一个人不应该通过uri传达信息,因为它只做一次。在这种情况下,让我们说**是**。 – Christian 2012-02-12 18:55:35

+4

封闭选民请解释为什么? **为什么我的问题没有建设性?** – Christian 2012-02-12 18:55:52

回答

56

有几个原因,你可能想这样做,但他们可能不太常见的(至少目前还没有):

  • 你加密和要发送未加密的数据/接收(例如,某些数据庞大但不敏感)。
  • 您既有流媒体数据又有延迟敏感数据:想象一下偶尔会在游戏内部流式传输视频的互动游戏。您不希望大媒体流延迟收到延迟敏感的正常游戏消息。
  • 你既有文本(例如JSON控制消息)和二进制数据(类型数组或blob),也不想打扰添加自己的协议层来区分,因为WebSockets已经为你做这件事。
  • 您有多个WebSocket子协议(URI后的可选设置),您支持并且页面要访问多个WebSocket子协议(每个WebSocket连接仅限于一个子协议)。
  • 您有几个不同的WebSocket服务位于同一个Web服务器和端口后面。客户端选择每个连接的方式可能取决于URI路径,URI方案(ws或wss),子协议,或者甚至是客户端到服务器的第一条消息。

我确定还有其他的原因,但这些都是我能想到的。

+0

+1非常丰富! – Jonas 2012-02-13 23:26:51

0

我目前正在寻找有两个连接到同一个websocket的解决方案。我的理由:

  • 我写了QUnit测试用例,我想模拟多个客户端,检查不同客户的正确反应
0

我发现,它可以使更简单,当你的客户端逻辑只是订阅服务器管理的某些对象的更新。您可以为每个元素打开一个套接字,而不是为单个通道设计自定义订阅协议。

比方说,你在

获得通过REST API元素的集合
http://myserver/api/some-elements 

你可以使用一个插座的URL像这样订阅单个元素的更新:

ws://myserver/api/some-elements/42/updates 

当然之一可以争辩说,这并不适合复杂的网页。但是,对于小而简单的应用,它可能会让您的生活变得更加轻松。