写在开始
最近使用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在服务器端和客户端有基本一致的编程体验,也是极易上手的。
网友评论