一起来读书2- websocket权威指南

1.http是无状态的,并不适合有状态的场景

2.websocket api
    2-1. WebSocket(url, protocol) 
        url:地址 
        protocol:协议(1.注册协议 2.开放协议 3.自定义协议)
    2-2. open
    2-3. message
    2-4. error
    2-5. close
    2-6. send
    2-7. read

3.readyState
    3-1. CONNECTING:0 
    3-2. OPEN:1
    3-3. CLOSING:2
    3-4. CLOSED:3

4.bufferedAmount:缓冲区数据字节数

5.握手
    5-1.websocket sec:
        Sec-WebSocket-Key:只能在HTTP请求中出现一次
            (用与从客户端到服务器的websocket初始握手,避免跨协议攻击)
        Sec-WebSocket-Accept:只能在HTTP请求中出现一次
            (用于从客户端到服务器的WebSocket初始握手,确认服务器理解WebSocket协议)
        Sec-WebSocket-Extensions:可能在HTTP请求中出现多次,在HTTP响应中只出现一次
            (用于从客户端到服务期的WebScoekt初始握手,然后用于从服务器到客户端的响应,
            这个首标帮助客户端和服务器约定一组连接期间使用的协议级扩展)
        Sec-WebSocket-Protocol:
            (用于从客户端到服务器的WebSocket初始握手,然后用于从服务器到客户端的响应.
            这个首标通告客户端应用程序可使用的协议.服务器使用相同的首标,在这些协议中的最多选择一个)
        Sec-WebSocket-Version:
            (用于从客户端到服务器的WebSocket初始握手,表示版本兼容性, RFC 6455的版本总是13.
            服务器如果不支持客户端请求的协议版本,则用这个首标响应.在那种情况下,
            服务器发送的首标中列出了它支持的版本.这只发生在RFC 6455之前的客户端中)
    5-2.websocket http 请求:
        相比普通的的http请求多了"Upgrade: websocket"选项

6.帧
    6-1.帧头:
        操作码(1byte) + 长度(1byte:1bit是否屏蔽 + 7bit长度) + 扩展长度(0/2/8byte) + 
            屏蔽(4byte,仅客户端) + 数据
    6-2.操作码:
        类型:
            1: 文本
            2: 二进制
            8: 关闭
            9: ping
            10:pong
    6-3.utf-8是websocket文本消息中允许的唯一编码
    6-4.websocket要求客户端屏蔽发送的所有帧,一般用4byte做屏蔽码

7.关闭握手
    关闭代码:
        1000:正常关闭
        1001:离开
        1002:协议错误
        1003:不可接受的数据类型
        1004,1005,1006:保留
        1007:无效数据
        1008:消息违反政策
        1009:消息过大
        1010:需要扩展
        1011:意外情况
        1012:TLS失败(不要用这个代码)
    关闭代码范围解释:
        0~999:禁止使用当前范围的代码
        1000~2999:保留
        3000~3999:需要注册
        4000~4999:私有
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章