WebSocket

420 阅读2分钟

使用场景

如果我们要监听某个服务状态的变化,一般采用什么方法呢?往小了说,如果这个服务状态仅会发生一次变化,那这种就是我们常用的异步请求,通过回调函数来监听;如果是不断监听呢?就像聊天工具,需要随时接收对方的消息,最原始的做法可能是通过Ajax不断轮询,但这种不断请求对资源是严重的浪费。

image.png

特点

WebSocket一大特点就是支持双向通讯,现在有关即时消息的方案,基本都是通过WebSocket来实现的。

请求

我们可以在Chrome浏览器调试窗口来查看。

打开WebSocket请求测试网站:

image.png

F12打开调试控制台,点击Connect连接,就会看到一个请求,现在就这一个请求,很容易找到,但如果Network请求很多的情况下,我们可以通过两种方式来过滤WebSocket请求:

  • 切换到WS
  • 在过滤条件输入is:running

image.png

然后,点击Send发送消息。再单击WebSocket请求,这样收发的消息都能看到。其中绿色向上的箭头表示发送的消息,红色向下的箭头表示收到的消息。还包括消息的长度和发送/接收的时间。如下图所示:

image.png

  • 数据(Data):消息负载。如果消息为纯文本,则在此处显示。对于二进制操作码,此列将显示操作码的名称和代码。支持操作码有:Continuation Frame、Binary Frame、Connection Close Frame等...
  • 长度(Length):消息负载的长度,以字节为单位
  • 时间(Time):发送或接收消息的时间
消息颜色
  • 发送到服务器的文本为浅绿色
  • 接收到的文本消息为白色,也就是无底色
  • 操作码为浅黄色
  • 错误为浅红色

image.png