此页面 已准备就绪

注意: WebPlatform 项目在 2012 年至 2015 年间由多个维护者支持,现已停止维护。该网站现在可在 github 上找到。

websocket API

摘要

WebSocket 是一种 JavaScript API 和配套协议,允许您创建“web sockets”,能够在持久的 TCP 连接(socket)上实现双向全双工通信。

CloseEvent
表示 WebSocket 关闭事件的对象。
WebSocket 对象 API 详情
用于创建和管理与服务器的 WebSocket 连接,以及在连接上发送和接收数据的对象。

用法

 Writing a WebSocket application in JavaScript is quite simple. Establish a connection, and hook into the open, error, message and close events as necessary. Remember, WebSocket is subject to the same-origin policy, like AJAX. This means if you want to test your client locally, you'll need to run a web server (e.g., python -m SimpleHTTPServer or php -S localhost:8000). Here's a simple example client that should work in newer browsers:
  var socket = new WebSocket('ws://:8080/');
  socket.onopen = function () {
      console.log('Connected!');
  };
  socket.onmessage = function (event) {
      console.log('Received data: ' + event.data);
      socket.close();
  };
  socket.onclose = function () {
      console.log('Lost connection!');
  };
  socket.onerror = function () {
      console.log('Error!');
  };
  socket.send('hello, world!');

为了补充说明,这里提供一个使用 Twisted 的 Python 编写的回显服务器示例

  from twisted.internet import protocol, reactor
  from txws import WebSocketFactory

  class Echo(protocol.Protocol):
      def dataReceived(self, data):
          self.transport.write(data)

  class EchoFactory(protocol.Factory):
      def buildProtocol(self, addr):
          return Echo()

  reactor.listenTCP(8080, WebSocketFactory(EchoFactory()))
  reactor.run()

备注

与标准的 HTTP 类似,WebSocket 默认使用端口 80 进行明文通信,使用端口 443 进行 SSL 通信。WebSocket 客户端建立 HTTP 连接并请求使用 HTTP Upgrade 机制切换协议,然后遵循握手协议以确保客户端和服务器都支持 WebSocket。由于 WebSocket 连接以 HTTP 启动,WebSocket 可以穿透许多现有的代理和防火墙,而某些其他协议则不行。

一旦建立连接,消息将以文本或二进制格式作为“帧”在两个方向上传输。这些是在 JavaScript 中发送和接收的数据字符串。

WebSocket URI 具有与 HTTP URI 相同的基本格式,但具有不同的 URI 方案:ws://hostname:port/path,例如 ws://example.com/echo 或 ws://example.net:8080。路径可用于区分连接的目的;但是,某些服务器会忽略它。安全的 WebSocket(通过 SSL/TLS 的 WebSocket)URI 以 wss:// 开头,而不是 ws://。

参见

外部资源

署名