我需要使用 websocket 将 JSON 数据发送到我的客户端吗?(这是一个很小的会话描述)
目前,我的客户端代码通过 XHR 向我的 Node.js 服务器发送会话描述。收到后,我的节点服务器需要将其发送到“房间”中的另一个客户端。
我可以使用 socket.io 来实现这一点,但是是否可以做任何更快/更安全的事情,例如 XHR?
我需要使用 websocket 将 JSON 数据发送到我的客户端吗?(这是一个很小的会话描述)
目前,我的客户端代码通过 XHR 向我的 Node.js 服务器发送会话描述。收到后,我的节点服务器需要将其发送到“房间”中的另一个客户端。
我可以使用 socket.io 来实现这一点,但是是否可以做任何更快/更安全的事情,例如 XHR?
如果您只是想收到对方的报价而不是其他,我建议您尝试 HTML5 Server Sent Events。
但这可能会由于不同的浏览器支持而带来问题,所以我会使用一个简单的长池请求。由于您只想获得 SDP 报价,因此实施非常简单。
不,您不需要使用 WebSocket API 通过服务器将 JSON 数据从客户端发送到客户端,但除非您使用 Google 专有的 App Engine Channel API,否则 WebSocket API 可能是您的最佳选择。
另外,请记住,您不仅要发送会话描述,还要发送候选信息(多次)以及您可能需要开始/关闭会话等的其他任意数据。
据我所知,WebSocket API 是最快的信号解决方案(比 XHR 更快),因为在初始握手后,多个 HTTP 请求所涉及的所有开销都不存在。
如果您想自己编写代码,我会开始阅读最新的WebSocket 草案并学习如何自己编写 WebSocket 服务器端脚本,否则您将不得不依赖像 Socket.IO 这样的 WebSocket 库或专有解决方案像 Google 的 App Engine Channel API。
使用303 HTTP 状态码怎么样?
第一个客户端将会话描述发送到资源 X,服务器确认收到并以 303 状态代码响应,该状态代码指向一个新创建的资源 Y,该资源 Y 累积了其他客户端会话描述。
第一个客户端轮询资源 X 直到它发生变化。
第二个客户端将其会话描述发送到资源 A,服务器确认接收并更新资源 Y。第一个客户端在下一次轮询时注意到更新,现在将拥有第二个客户端的会话信息。