美文网首页开发设计
01.WebSocket介绍

01.WebSocket介绍

作者: 哈哈大圣 | 来源:发表于2019-06-01 10:03 被阅读49次

    WebSocket基础

    一、HTTP/1.1的升级的WebSocket协议

    1). 升级特点

    1. http升级后的重要特性:请求头中包含信息 Connection: Upgrade 表示升级连接, 升级握手完成后,不再使用http连接,甚至可以使用持久的、全双工的TCP套接字连接。(浏览器不会让开发者随意使用TCP栈)
    2. 升级的WebSocket协议首先使用非正常的HTTP请求以特定的的模式访问一个URL,存在重要头信息Connection: UpgradeUpgrade: websocket表示高速服务器将连接升级为WebSocket协议(RFC6455)。握手完成后,全双工通道建立完成,文本消息和二进制消息可以在两个方向上使用。客户端和服务端有对等的通信能力,都是简单的节点。

    http和https表示使用不加密(ws)和SSL/TLS加密(wss)的方式进行通信,同样适用于WebSocket连接,建议使用wss方式进行连接(后续会介绍)

    2). WebSocket协议的优点

    1. 连接在80(ws)或者443(wss)上创建,与Http使用的端口相同,几乎所有防火墙不会阻塞WebSocket的连接。
    2. 使用Http进行握手,该协议很自然地集成到网络浏览器和http服务器中。
    3. 心跳消息(ping pong)反复地被发送,保持WebSocket连接几乎一致处于活跃状态(一个节点周期性的发送一个小数据包到另一个节点(ping),另一个节点使用相同的数据包作为相应(pang),将使者两个节点都处于连接状态。)
    4. 该协议构建消息不需要额外的代码,消息启动和内容到达时,服务器好客户端都会知晓。
    5. WebSocket连接关闭时发送一个特殊的关闭消息,其中包含原因代码和用于解释连接被关闭原因的文本。
    6. WebSocket协议可以安全地支持跨域连接。避免Ajax和XMLHttpRequest上的限制。
    7. Http规范要求浏览器将并发连接数限制为每个主机名两个连接,但是握手之后该限制就不存在了,因为此时的连接已经不再是HTTP连接了。

    3). WebSocket连接握手请求头与请求体头信息

    1. 请求体头信息
    GET /webSocketEndpoint HTTP/1.1   # prelude信息
    Host: www.example.org             # Host头信息
    Connection: Upgrade               # 连接升级请求
    Upgrade: websocket                # 升级连接类型
    Origin: http://example.org        # 安全机制,预防非预期的跨域请求【服务器检查是否在允许的列表中】
    Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== # 浏览器生成的规范一致性检查,随机,base64编码
    Sec-WebSocket-Version: 13         # 当前版本 
    Sec-WebSocket-Protocol: game      # 用户自定义协议
    
    1. 响应头信息
    HTTP/1.1 101 Switching Protocols
    Server: Apache 2.4
    Connection: Upgrade
    Upgrade: websocket
    Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= # 在请求头Sec-WebSocket-Key添加了一个258EAFA5-E914-47DA-95CA-C5AB0DC85B11 使用SHA-1计算哈希值然后使用base64编码
    Sec-WebSocket-Protocol: game
    

    推荐使用wss方式建立连接,当在http代理的情况下,代理通常不会干涉SSL/TLS连接,而是让其自己运行!

    二、WebSocket用途举例

    1. JavaScript聊天
    2. 多人在线游戏
    3. 在线股票
    4. 在线及时新闻网站
    5. 高清视频流
    6. 应用程序集群节点之间的通信
    7. 应用程序之间跨网络传输大量事务数据
    8. 远程系统或者软件状态和性能的时时监控
    9. 等等...

    相关文章

      网友评论

        本文标题:01.WebSocket介绍

        本文链接:https://www.haomeiwen.com/subject/epsotctx.html