关于Web Sockets我有几个问题。
最新的Firefox 4.0每晚支持Web套接字。 Webkit(Chrome 4 + Safari 4/5)也是如此。根据Microsoft的说法,Internet Explorer 9应该在某些时候具有Web套接字功能(在稳定版本之前)。
无论如何,我的问题是:
navigator.online
和window.addEventListener('offline', ...)
,但是有了Web套接字(由于连接丢失),我能够更准确,更快地检测到连接问题吗?我的意思是,当我关闭Internet连接或使用防火墙阻止它时,Firefox仍显示navigator.online
为 true 。使用Web套接字,似乎与服务器的连接将立即丢失,因此,我可以更准确地检测到连接问题吗? 希望您能回答尽可能多的问题。我对答案真的很感兴趣。
最佳答案
在我看来,您只是想为此使用WebSockets。使用WebSockets的主要原因是当您要将数据从服务器推送到客户端时。如果您的应用程序不需要它,则可能不应该使用WebSockets。
由于没有标题,您可能在两端(客户端和服务器)上节省了一些时间。但是 yield 可能很小。
是的,当WebSocket关闭时,事件将立即触发。替代方案是长轮询或定期XHR。或事件客户端存储。
首先,我建议您通读this。 WebSockets不能以同步方式很好地工作。 PHP和apache不能以异步方式很好地工作。尽管there are some implementations,但其中许多已过时。我个人会为此使用其他语言,例如ruby,python,java或server-side javascript。仅仅是因为这些语言对异步模型具有更好的支持,并且WebSocket实现更加复杂。
WebSocket协议(protocol)目前仍是草案,可以更改。就像a few weeks ago一样。因此,您的代码很可能会中断。
我的建议是:不要仅仅为了它而使用WebSockets。如果您具有实时事件驱动的应用程序,那么它可能是正确的选择。确保您了解WebSocket的用途以及它在服务器端的作用,以及事件驱动的应用程序。不要将其用于任何生产,它太脆弱了。