^_^

2009年12月11日星期五

在 Google Chrome 中使用 Web Sockets

3秒 (3SECONDS.CN) 翻译整理《Web Sockets Now Available In Google Chrome》:
从 Google Chrome 的 developer channel 释放的4.0.249.0版本开始,Web Sockets 已经可用并默认开启了。Web Sockets 是“网络的 TCP”,它是 Web Applications 1.0 中下一代网络应用程序双向通信技术标准的一部分。正如在 WebKit 和 Chromium 的设计文档中所描述的那样,我们已经实现了这一功能。

Web Sockets API 使 Web 应用程序使用服务器端进程直截了当的处理双向通信。为达到此目的,现在开发者一般使用的是 XMLHttpRequest(XHR),但是 XHR 使得开发与服务器进行来回通信的程序过于复杂。XHR 基于异步的 HTTP,而且因为你需要使用像长挂(long-hanging) GET 来从服务器发送数据到客户端浏览器,简单的任务因此变得复杂了。与 XMLHttpRequest 截然不同的的是,Web Sockets 在你的浏览器里面提供一个真正的双向沟通渠道,一旦得到 Web Socket 连接,你就能通过直接调用 send() 方法从浏览器发送数据到服务器,并且使用 onmessage 的这个事件处理句柄接收数据。
if ("WebSocket" in window) {
  var ws = new WebSocket("ws://example.com/service");
  ws.onopen = function() {
    // Web Socket is connected. You can send data by send() method.
    ws.send("message to send"); ....
  };
  ws.onmessage = function (evt) { var received_msg = evt.data; ... };
  ws.onclose = function() { // websocket is closed. };
} else {
  // the browser doesn't support WebSocket.
}
浏览器要与服务器通信,除了使用 Web Sockets API,还需要“web socket protocol(网络套接字协议)”。该协议不是原始的 TCP,因为它需要给浏览器提供“same-origin”的安全模型。它也不同于 HTTP,因为 web socket 的传输模式与 HTTP 的“请求-响应模式(request-response model)”是不同的。使用新的 web socket 协议将会更节省带宽,因为它不像 XHR 和长挂 GET,web socket 每一次连接建立都不会交换头信息。当然你可能以为要使用这个新的 API 和协议来使编程模型更简单和更有效的利用带宽,就必须要重新实现服务器端的程序。其实不用担心,因为我们还开发了 pywebsocket,你可以把它作为 Apache 的一个拓展模块(extension module)使用,也可以把它作为一个独立的 WEB 服务器程序使用。

从现在开始你可以使用 Google Chrome 和 pywebsocket 来进行 Web Socket 应用程序开发了。我们非常乐意听到您对于新的API和协议的意见。这个协议尚未定型,它仍然在 IETF 的讨论之中,所以早期测试使用者的反馈将是非常重要的。
本站文章除注明外,均为本站原创
转载请注明文章转载自: 大笨熊乐园 [ https://blog.foolbear.com/ ]
文章标题: 在 Google Chrome 中使用 Web Sockets
文章地址: https://blog.foolbear.com/2009/12/google-chrome-web-sockets.html

没有评论 :

发表评论

Related Posts with Thumbnails