WebSocket 在前端的应用场景
WebSocket 是一种在客户端和服务器之间建立持续连接的协议,它提供了一种实时、双向的通信方式。在前端方面,它的主要应用场景如下:
- 实时通信: WebSocket 可以与服务器建立持久的连接,通过它可以进行实时的消息传递,如聊天室、游戏等。
- 实时数据更新: 对于需要实时更新数据的场景,如股票行情、快递物流信息等,通过 WebSocket 能够快速地将数据推送给客户端,实现实时更新。
- 实时通知: 在需要告知用户的情况下,无需用户发出请求,服务器可以直接通过 WebSocket 向客户端推送通知,例如新邮件、提醒等。
Nodejs 实现 WebSocket
前端用的最多的后端语言就是 Nodejs,今天带大家使用 Nodejs 实现一个 WebSocket 服务,开始!
安装插件
使用 nodejs-websocket 插件,开发人员可以在 Node.js 中创建 WebSocket 服务器和客户端。
我们需要使用 npm 进行安装:
npm init
npm i nodejs-websocket
npm i nodemon -g
我们来介绍一下这个库提供的 API:
- createServer:创建一个 WebSocket 服务
- on:监听事件
- sendText:给订阅端发送信息
代码编写
我们需要创建一个 index.js
并写入以下的代码:
// 引入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');
});
启动服务
最后使用命令进行启动:
node index.js
我们可以看到这样的界面,说明运行成功:
mac@MacBook-Pro % nodemon index.js
[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node index.js`
service---success
前端页面连接 WebSocket
页面编写
我们需要创建一个 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 建立成功。
然后建立连接后,后端一直在为前端输出信息。
Apifox 调试 WebSocket 服务
如果你正在编写 WebSocket 服务并需要进行调试,我建议你使用一些很棒的 API 调试工具,如 Apifox,这款工具可以完美调试 WebSocket 服务~
Apifox 有 Web端 和 客户端,如果你使用的是 Web端,想要调试本地服务,需要安装:Apifox 谷歌浏览器插件。
新建 WebSocket 请求
WebSocket 是客户端和服务端之间的长链接,因此你需要在 Apifox 中创建一个 WebSocket 请求,以便跳转到 Apifox 界面并填写相应的请求信息。
点击创建按钮后填入 WebSocket 服务的地址,可以选择填写 Message 和 Params。
发送消息 和 传递参数
传递 WebSocket 请求消息
在 Message 中,你可以填写要传递到服务端的消息。服务端将接收你发送的信息。
传递 WebSocket 请求参数
我们可以传递参数去进行请求,携带的数据类型包括 string、integer、number、array。
保存请求
写完所需信息之后,点击保存按钮,方便下次可继续调用。
连接 WebSocket 请求 并 发送消息
进行 WebSocket 服务的连接
我们需要建立一个 WebSocket 请求,这样才能进行连接。连接成功之后,Apifox 有成功的提示,服务端那边也会因为连接成功,而做出响应。
WebSocket 请求的发送
我们这时就可以开始跟 WebSocket 通信了,只需要点击按钮,就可以向服务端进行发送消息和参数。
WebSocket 服务的通信
一旦发送完数据,服务端也有能力向客户端发送信息。比如,我在此处配置了服务端每秒发送本地的时间戳到客户端。这就是 Apifox 所提供的 WebSocket 功能,在实际应用中非常方便~
关于 Apifox
欢迎体验一下,完全免费的哦:在线使用 Apifox。
- 集成了 API 文档、API 调试、API Mock、API 自动化测试 API 一体化协作平台
- 拥有更先进的 API 设计/开发/测试工具
- Apifox = Postman + Swagger + Mock + JMeter