websocket草案00协议

WebSocket握手协议

1、客户端握手请求
GET /WebSocket/LiveVideo HTTP/1.1\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
Host: localhost:8080\r\n
Origin: http://127.0.0.1\r\n
Sec-WebSocket-Key1: 23 asdfJKj,asdjk\r\n
Sec-WebSocket-Key2: dssariuvl,arssdd\r\n
r\n
8个字节Sec_WebSocket-Key3值  (没有键名)

2、服务端握手回复
HTTP/1.1 101 Web Socket Protocol Handshake\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Origin: http://127.0.0.1\r\n
Sec-WebSocket-Location: ws://localhost:8080/WebSocket/LiveVideo\r\n
r\n
16个字节的加密KEY

加密KEY算法:

Sec_WebSocket-Key1的产生方式:
(1)提取客户端请求的Sec_WebSocket-Key1中的数字字符组成字符串k1
(2)转换字符串k1为8个字节的长整型intKey1
(3)统计客户端请求的Sec_WebSocket-Key1中的空格数k1Spaces
(4)intKey1/k1Spaces取整k1FinalNum
(5)将k1FinalNum转换成字节数组再反转最终形成4个字节的Sec_WebSocket-Key1

Sec_WebSocket-Key2的产生方式:
(1)提取客户端请求的Sec_WebSocket-Key2中的数字字符组成字符串k2
(2)转换字符串k2为8个字节的长整型intKey2
(3)统计客户端请求的Sec_WebSocket-Key2中的空格数k2Spaces
(4)intKey2/k2Spaces取整k2FinalNum
(5)将k2FinalNum转换成字节数组再反转最终形成4个字节的Sec_WebSocket-Key2

Sec_WebSocket-Key3的产生方式:
客户端握手请求的最后8个字节

将Sec_WebSocket-Key1、Sec_WebSocket-Key2、Sec_WebSocket-Key3合并成一个16字节数组
再进行MD5加密形成最终的16个字节的加密KEY

3、消息发送接收
客户端和服务端发送非握手文本消息时,消息以utf-8编码,并以0x00开头,0xFF结尾。

4、关闭连接

客户端发送<<0xFF, 0x00>>,服务器回复<<0xFF, 0x00>>。

posted @ 2012-12-21 18:01  小壁虎借尾巴  阅读(375)  评论(0编辑  收藏  举报