我刚开始研究HTML5 WebSockets。我想知道我是否可以使用websocket而不是使用ASP.NET UpdatePanels来更新网页的所有内容,或者这会不会有些过头了?
WebSockets可以替代AJAX吗?这就是WebSockets应该用来做的吗?
大多数示例都是类似双向聊天的演示。但是,如果我想点击一个按钮而不是回发来更新网格,我可以用WebSockets来做这件事吗?这是个好主意吗?
我认为XHR和WebSocket适用于两种不同的场景,您应该使用更适合您的场景的方案。
XHR具有请求-响应对。每个请求都与一个响应配对。这对于远程过程调用很好,但如果您想要无请求响应(即服务器推送),则会产生不必要的开销。
WebSocket解决了上述问题。您可以发送请求而无需等待任何响应。服务器还可以通过响应向您发送任何内容,而无需您首先启动请求。
在按钮点击和内容更新场景(例如编辑表格单元格)中,XHR(和UpdatePanel)工作得更好。这是因为内容更新必须与按钮点击相结合。这是一对请求-响应。但在纯内容更新场景中(例如显示实时股价),WebSocket的工作效果更好。在内容更新与按钮点击(例如聊天)无关的场景中,WebSocket也能更好地工作。
WebSocket标准是为需要低延迟、低开销通信的应用程序设计的。它们适用于现有的应用程序,这些应用程序正在突破AJAX/Comet/long poll的限制。但更重要的是,WebSockets将启用一类全新的web应用程序,而这些应用程序还不存在。
对于您的情况,听起来WebSockets可能有些过头了,因为延迟不是您正在构建的核心问题。您当然可以使用WebSockets来完成这项工作,但我怀疑在您的情况下,这将是一项额外的工作,收效甚微。
请参阅以下答案,了解为什么WebSocket已经准备好用于一般用途(有了WebSocket js和本机iOS支持,这意味着几乎所有的浏览器都支持WebSocket)。
如果您想在IE8应该能够查看的页面中使用WebSockets,请改用Ajax。
WebSocket最初是为客户端和服务器之间的快速双向通信而设计的。让游戏在浏览器中蓬勃发展是非常重要的,但服务器端的实现还没有完全标准化——可能会有进一步的安全复杂性。
目前,WebSockets只用于toy实现。他们还没有为客户做好准备。此外,只有当Ajax调用和Comet调用对于您的需求来说太慢时,它们才是真正必要的。
从技术上讲,是的。实际上,我可能会等待
Websockets无疑是HTML5实现我们习惯的通信类型的方式。从技术上讲,是的,你可以,但根据你正在构建的网站类型,你可能想推迟。Websockets是HTML5规范中较新的部分之一,目前仍在最终确定中。它适用于最新版本的Chrome和Firefox 4,但IE9还没有实现,也没有消息表明IE10是否也会实现。展示最新技术的技术网站(比如演示HTML5中的可能性)和任何其他保证绝大多数观众使用支持浏览器或是早期采用者的网站都应该很好。否则,您可能会疏远一些用户。只有你才能决定走哪条路。
这里的关键是,目前Websockets是一个不断变化的规范,AJAX可以在旧浏览器和新浏览器中使用。如果你想向后兼容,除了保证规范和浏览器明天不会改变,也不会破坏你现有的代码外,还可以使用AJAX。如果你对规范和浏览器实现在未来可能发生变化的可能性很冷静,并且不在乎人们使用旧浏览器,那么就使用websocket。
另一个stackoverflow答案显示websocket支持:
- Chrome 4.0支持Websockets
- Safari 5.0.2也支持它们
- Firefox 4.0附带禁用了对WebSockets的支持。使其能够看到
- Opera 11船的支持功能被禁用以重新启用
- IE9不支持它们,但是一个附加组件提供了实验支持