JavaScript 之 WebSocket 用法

本文将介绍如何在 JavaScript 中使用 WebSocket,包括基本的使用方法和实际案例,适合初学者参考。

用 Apifox,节省研发团队的每一分钟

JavaScript 之 WebSocket 用法

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

前端领域中的 WebSocket

JavaScript 之 WebSocket 用法

Websocket 是一种应用层协议,它基于 TCP 连接提供全双工通信。在前端领域,Websocket 可以用于实现实时通信,相对于一般的 HTTP 请求/响应模式,Websocket 可以更快速、实时地传输数据,并且可以保持长时间连接。

以下是 Websocket 在前端领域的应用:

  • 实时消息和通知: Websocket 可以用于实现实时消息和通知功能,例如在线聊天室、实时游戏等。
  • 实时数据传输: Websocket 可以用于,例如股票市场的实时报价、天气预报等实时数据传输。
  • 远程会议和视频会议: Websocket 可以用于实现实时的语音、视频会议,同时保持高品质音频和视频。
  • 实时协作应用: 例如 Google Docs,通过 Websocket,多个用户可以同时编辑同一个文档,并即时看到对方在做什么。
  • 与服务器保持长连接: 通过 Websocket,浏览器可以与服务器保持长时间的连接,从而避免了重复的 HTTP 请求。这可以优化应用程序的性能,提高响应速度。

 

JavaScript 中的 WebSocket

介绍

WebSocket 是 JavaScript 中的一种浏览器内置的 API,使得 Web 应用程序能够建立双向通信通道,能够在浏览器与服务器之间进行实时的数据传输和交换。

JavaScript 之 WebSocket 用法
WebSocket

 

WebSocket API

WebSocket 具备以下几个属性方法:

  • onopen: 当与服务器建立连接时触发的事件处理程序函数。
  • onmessage: 当接收到来自服务器的消息时触发的事件处理程序函数。
  • onclose: 当 WebSocket 连接关闭时触发的事件处理程序函数。
  • onerror: 当发生 WebSocket 错误时触发的事件处理程序函数。

readyState 一个只读属性,用于表示 WebSocket 的当前状态。可能的值为:

  • 0: 初始状态,即 CONNECTING
  • 1: 已连接状态,即 OPEN
  • 2: 正在关闭状态,即 CLOSING
  • 3: 已关闭状态,即 CLOSED
  • binaryType: 一个字符串属性,用于表示服务器发送的数据类型。可能的值为 "blob" 或 "arraybuffer"。
  • extensions: 一个字符串属性,用于表示服务器提供的与 WebSocket 关联的扩展。
  • protocol: 一个字符串属性,用于表示服务器和客户端之间所使用的协议名称。

深入了解:全面深入:WebSocket API 的详细解析

 

前端实践 WebSocket

Nodejs 起一个 WebSocket 服务

我们需要使用 Nodejs 去起一个 WebSocket 服务,具体代码如下:

 // 引入nodejs-websocket
const ws = require('nodejs-websocket');
// 定义监听的host地址跟port端口
const HOST = '127.0.0.1'
const PORT = 3001;
// 创建ws服务
const service = ws.createServer((conn) => {
  conn.on('text', (message) => {
    // 当收到消息的时候就开始定时推送
    console.log('message', message);
    setInterval(() => {
      // 随机推送message里的内容
      conn.sendText(`Now is ${new Date().getTime()}`);
    }, 1 * 1000);
  });
}).listen(PORT, HOST, () => {
  console.log('service---success');
});

 

页面编写

我们需要创建一个 index.html,并写入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script>
    window.onload = () => {
        if ('WebSocket' in window) {
            // 创建websocket连接
            let ws = new WebSocket('ws://127.0.0.1:3001/websocket');
            // 成功连接的时候推送一条消息,此时服务端就可以开始推送数据了
            ws.onopen = () => {
                console.log('websocket success---');
                ws.send('success');
            }
            ws.onmessage = (message) => {
                let data = message.data;
                console.log('get websocket message---', data);
            }
            ws.onerror = () => {
                console.error('websocket fail');
            }
        } else {
            console.error('dont support websocket');
        };
    };
</script>

</head>
<body>
  
</body>
</html>

启动页面

在 index.html 右键,并打开此文件

启动页面

查看效果

可以看到后端先接收到前端的信息,open 建立成功

然后建立连接后,后端一直在为前端输出信息

JavaScript 之 WebSocket 用法
查看效果


在 Apifox 中调试 WebSocket


如果你要调试 WebSocket 接口,并确保你的应用程序能够正常工作。这时,一个强大的接口测试工具就会派上用场。

   
Apifox 是一个比 Postman 更强大的接口测试工具,Apifox = Postman + Swagger + Mock + JMeter。它支持调试 http(s)、WebSocket、Socket、gRPCDubbo 等多种协议的接口,这使得它成为了一个非常全面的接口测试工具,所以强烈推荐去下载体验

 
在 Apifox 中,你需要创建一个 WebSocket 请求以便进入相应的界面进行必要的信息填写。以下是步骤:

  1. 新建一个 HTTP 项目后,在项目中点击“+”按钮。
  2. 输入 WebSocket 服务的地址,例如 http://localhost:3000
  3. 选择性地填写要传输的消息(Message)和参数(Params)。
  4. 填写完必要信息后,点击“保存”按钮以保留本次请求信息,方便下次调用。
JavaScript 中连接 WebSocket


要与服务器进行通信,你首先需要建立一个 WebSocket 连接。只需点击“连接”按钮即可。连接成功后,Apifox 会给出提示,同时服务器也会对此作出响应。

JavaScript 中连接 WebSocket


成功连接后,你可以使用 Apifox 提供的“发送”按钮,来发送消息和参数给服务器。

连接 WebSocket


发送消息后,服务器同样可以向客户端回传信息,这一功能展示了 Apifox 的 WebSocket 功能的简便性,快去试试吧!

测试 WebSocket

总结


WebSocket 是一种实现浏览器与服务器间全双工通信的协议,特别适用于需要实时交互的应用场景,如在线聊天、实时游戏、实时数据更新等。在前端开发中,通过 WebSocket API,开发者可以轻松创建与服务器的持久连接,实现高效、低延迟的数据交换。API 包括 onopen、onmessage、onclose 和 onerror 等事件处理程序,以及 readyState 等属性,帮助管理连接状态和数据流。结合 Node.js 和 Apifox 等工具,可以有效构建和测试 WebSocket 应用,提升开发效率和用户体验。