zoukankan      html  css  js  c++  java
  • WebSocket与HTTP

    什么是WebSocket:

         首先,WebSocket是一种通信协议,区别于HTTP协议,HTTP协议只能实现客户端请求服务器响应的这种单向通讯

    而WebSocket可以实现客户端与服务器的双向通讯。

    最大优势:

         可以做到服务端主动将消息推送给客户端

    其余特点:

         1、握手阶段采用http协议

         2、数据格式轻量,性能开销小,客户端与服务端进行数据交换时,服务端到客户端的数据包头只有2-10字节,客户端到服务器需要加上另外4字节的掩码。,http每次都要携带完整头部

         3、更好的二进制支持,可以发送文本和二进制数据

         4、没有同源限制,客户端可以与任意服务器进行通信

         5、协议标识符是WS(如果加密,则是WSS),请求的地址就是后端支持WebSocket的API

    与服务端实时通信的方法:

         1、AJAX轮询

         2、Long Polling长轮询

    以上俩种缺点:开销大,被动性,并发高的时候服务器压力很大

         3、WebSocket通信

    连接过程:客户端发起HTTP握手,告诉服务端进行WebSocket协议通讯,并告知WebSocket协议版本,服务端确定协议版本,升级为WebSocket协议。之后如果有数据需要推送,会主动推送给客户端。

    WebSocket API

    客户端若想与支持WebSocket的服务器通信,可以使用WebSocket构造函数返回WebSocket对象

    const test = new WebSocket("ws://localhost:8080/websocket");
    • WebSocket.onopen: 连接成功后的回调
    • WebSocket.onclose: 连接关闭后的回调
    • WebSocket.onerror: 连接失败后的回调
    • WebSocket.onmessage: 客户端接收到服务端数据的回调
    • webSocket.bufferedAmount: 未发送至服务器的二进制字节数
    • WebSocket.binaryType: 使用二进制的数据类型连接
    • WebSocket.protocol : 服务器选择的下属协议
    • WebSocket.url : WebSocket 的绝对路径
    • WebSocket.readyState: 当前连接状态,对应的四个常量

           WebSocket.CONNECTING: 0

           WebSocket.OPEN: 1

           WebSocket.CLOSING: 2

           WebSocket.CLOSED: 3

    方法:

      • WebSocket.close() 关闭当前连接
      • WebSocket.send(data) 向服务器发送数据
  • 相关阅读:
    nodejs 提示‘xxx’ 不是内部或外部命令解决方法
    nodejs安装express不是内部或外部命令
    菜鸟供应链升级实践
    数据治理框架解读分析
    Canal+Kafka实现MySQL与Redis数据同步
    一条 SQL 引发的事故,同事直接被开除!!
    我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
    从 Storm 迁移到 Flink,美团外卖实时数仓建设实践
    供应链管理学习心得
    解密京东智慧供应链
  • 原文地址:https://www.cnblogs.com/liyhbk/p/14237274.html
Copyright © 2011-2022 走看看