我可以将HTML5 WebSockets用于通常使用AJAX完成的任务吗?

时间:2011-06-23 14:10:52

标签: asp.net html5 updatepanel websocket

我刚开始研究HTML5 WebSockets。我想知道我是否可以使用websockets而不是使用ASP.NET UpdatePanel来更新所有网页的内容,或者这是否有点过分?

可以使用WebSockets代替AJAX吗?这是WebSockets应该用于什么?

大多数示例都适用于双向聊天式演示。但是如果我想点击一个按钮而不是回发来更新网格,我可以用WebSockets做这个并且这是个好主意吗?

4 个答案:

答案 0 :(得分:3)

我认为XHR和WebSocket适用于两种不同的场景,您应该使用更适合您场景的场景。

XHR具有请求 - 响应对。每个请求都与响应配对。这对于远程过程调用很有用,但如果您想要没有请求的响应(即服务器推送),则会产生不必要的开销。

WebSocket解决了上述问题。您可以发送请求而不期待任何响应。服务器还可以通过响应向您发送任何内容,而无需先发起请求。

在按钮点击和内容更新方案中(例如编辑表格单元格),XHR(和UpdatePanel)效果更好。这是因为内容更新必须与点击按钮配对。这是一个请求 - 响应对。但在纯内容更新方案中(例如显示实时股票价格),WebSocket效果更好。在内容更新与按钮点击(例如聊天)无关的情况下,WebSocket也可以更好地工作。

答案 1 :(得分:2)

WebSocket标准专为需要低延迟,低开销通信的应用而设计。它们适用于现有的应用程序,这些应用程序正在推动使用AJAX / Comet / long-poll实现的极限。但更重要的是,WebSockets将启用一个尚未存在的全新Web应用程序类。

对于您的情况,听起来像WebSockets可能会过度杀伤,因为延迟不是您正在构建的核心问题。你当然可以用WebSockets做到这一点,但我怀疑在你的情况下,这将是额外的工作,但收效甚微。

请参阅this answer了解为什么WebSockets已准备好进行常规使用(使用web-socket-js和本机iOS支持,这意味着几乎所有浏览器都支持WebSockets。)

答案 2 :(得分:0)

如果要在IE8应该能够查看的页面中使用WebSockets,请改用Ajax。

WebSockets最初设计用于客户端和服务器之间的快速双向通信。让游戏在浏览器中蓬勃发展非常重要,但服务器端实现还没有完全标准化 - 可能还有其他安全问题。

目前,WebSockets仅用于玩具实施。他们不是客户准备好的。此外,只有在Ajax调用 Comet调用太慢而无法满足您的需求时,才需要它们。

答案 3 :(得分:0)

技术上,是的。实际上,我可能会等待。

Websockets绝对是HTML5用于我们习惯的通信方式的方式。从技术上讲,是的,你可以,但根据你正在建设的网站类型,你可能想要推迟。 Websockets是HTML5规范的新成员之一,目前仍在定稿中。它适用于最新版本的Chrome和Firefox 4,但IE9还没有实现,并且没有关于IE10是否会拥有它的消息。展示最新技术的技术网站(如演示HTML5中可能的内容)以及绝大多数观众将保证使用支持浏览器或早期采用者的任何其他内容应该没问题。如果没有,您可能会疏远一些用户。只有你可以决定走哪条路。

这里的关键是Websockets目前正在改变规范,而AJAX适用于新旧浏览器。如果您想要向后兼容除了保证规范和浏览器明天不会改变并打破您现有的代码,请使用AJAX。如果你很酷,规范和浏览器的实现可能会在将来发生变化而不关心使用旧浏览器的人,那么就使用websockets。

Another stackoverflow answer shows websocket support

  • Chrome 4.0支持网页插件。
  • Safari 5.0.2也支持它们
  • Firefox 4.0附带禁用WebSockets的支持。启用它看
  • Opera 11附带禁用支持以重新启用它,请参阅
  • IE9不支持它们,但附加组件提供实验性支持