在所有网络浏览器中使用网络套接字会使 ajax 过时吗?
因为如果我可以使用 Web 套接字来实时获取数据和更新数据,为什么还需要 ajax?即使我在应用程序启动时使用 ajax 只获取一次数据,我仍然可能想看看该数据在一段时间后是否发生了变化。
Web 套接字是否可以跨域或只能连接到同一源?
请您参考如下方法:
WebSockets 不会让 AJAX 完全过时,而且 WebSockets 可以跨域。
AJAX
AJAX 机制可以与普通 Web 服务器一起使用。在最基本的层面上,AJAX 只是网页发出 HTTP 请求的一种方式。 WebSockets 是一个低得多的级别协议(protocol),需要 WebSockets 服务器(内置于 Web 服务器中、独立的或从 Web 服务器代理到独立服务器)。
使用 WebSockets,帧和有效负载由应用程序确定。您可以在客户端和服务器之间来回发送 HTML/XML/JSON,但您并不被迫这样做。 AJAX 是 HTTP。 WebSockets 具有 HTTP 友好的握手方式,但 WebSockets 不是 HTTP。 WebSockets 是一种双向协议(protocol),与 HTTP 相比,它更接近于原始套接字(故意如此)。 WebSockets 有效负载数据在当前版本的标准中采用 UTF-8 编码,但在未来版本中可能会更改/扩展。
因此,即使在所有客户端都原生支持 WebSocket 的世界中,AJAX 类型请求也可能永远有一席之地。 WebSockets 试图解决 AJAX 不具备或能力有限的情况(因为 WebSockets 是双向的且开销低得多)。但 WebSocket 并不能取代 AJAX 的所有用途。
跨域
是的,WebSockets支持跨域。设置连接的初始握手会传达源策略信息。维基百科页面显示了典型握手的示例:http://en.wikipedia.org/wiki/WebSockets