使用场景
如果我们要监听某个服务状态的变化,一般采用什么方法呢?往小了说,如果这个服务状态仅会发生一次变化,那这种就是我们常用的异步请求,通过回调函数来监听;如果是不断监听呢?就像聊天工具,需要随时接收对方的消息,最原始的做法可能是通过Ajax不断轮询,但这种不断请求对资源是严重的浪费。
特点
WebSocket一大特点就是支持双向通讯,现在有关即时消息的方案,基本都是通过WebSocket来实现的。
请求
我们可以在Chrome浏览器调试窗口来查看。
打开WebSocket请求测试网站:
F12打开调试控制台,点击Connect连接,就会看到一个请求,现在就这一个请求,很容易找到,但如果Network请求很多的情况下,我们可以通过两种方式来过滤WebSocket请求:
- 切换到WS
- 在过滤条件输入is:running
然后,点击Send发送消息。再单击WebSocket请求,这样收发的消息都能看到。其中绿色向上的箭头表示发送的消息,红色向下的箭头表示收到的消息。还包括消息的长度和发送/接收的时间。如下图所示:
- 数据(Data):消息负载。如果消息为纯文本,则在此处显示。对于二进制操作码,此列将显示操作码的名称和代码。支持操作码有:Continuation Frame、Binary Frame、Connection Close Frame等...
- 长度(Length):消息负载的长度,以字节为单位
- 时间(Time):发送或接收消息的时间
消息颜色
- 发送到服务器的文本为浅绿色
- 接收到的文本消息为白色,也就是无底色
- 操作码为浅黄色
- 错误为浅红色