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