WebSocket介绍

写在开始

最近使用socket.io做了一个五子棋小游戏,附带简易聊天功能。刚好在总结XMLHttpRequest的相关知识,就想着先简单介绍一下WebSocket吧(毕竟api出奇的简单233)。

WebSocket介绍

WebSocket协议提供一个供TCP连接进行双向通讯的机制,以解决HTTP客户端和服务器之间请求-应答模式交互的不足。WebSocket连接默认情况下借用80(HTTP)和433(HTTPS)端口发起请求,WebSocket连接一开始通过发起一个http请求,如下:

GET ws://echo.websocket.org/?encoding=text HTTP/1.1

Origin: http://websocket.org

Cookie: __utma=99as

Connection: Upgrade

Host: echo.websocket.org

Sec-WebSocket-Key: uRovscZjNol/umbTt5uKmw==

Upgrade: websocket

Sec-WebSocket-Version: 13

Connection: Upgrade,Upgrade: websocket等信息告诉服务器从HTTP切换到WebSocket。如果服务端支持WebSocket通讯,并同意切换,返回相应的响应头:

HTTP/1.1 101 WebSocket Protocol Handshake

Date: Fri, 10 Feb 2012 17:38:18 GMT

Connection: Upgrade

Server: Kaazing Gateway

Upgrade: WebSocket

Access-Control-Allow-Origin: http://websocket.org

Access-Control-Allow-Credentials: true

Sec-WebSocket-Accept: rLHCkw/SKsO9GAH/ZSFhBATDKrU=

Access-Control-Allow-Headers: content-type

此时http连接中断并被WebSocket连接取代。

浏览器端使用WebSocket的api异常简单,但是要封装成好用的WebSocket库还是要下一番功夫的,并且服务器端没有标准的WebSocket规范,推荐使用socket.io。

socket.io和socket.io-client在服务器端和客户端有基本一致的编程体验,也是极易上手的。


参考资料

1.About HTML5 WebSocket

2.如何理解 TCP/IP, SPDY, WebSocket 三者之间的关系

你可能感兴趣的:(WebSocket介绍)