WebSocket 是一种用于在客户端和服务器之间进行双向通信的技术。在前端开发中,我们经常需要使用 WebSocket 来实现实时通信功能,例如聊天室、在线游戏等。而 Hapi 是一种流行的 Node.js Web 框架,它提供了一种方便的方式来处理 WebSocket 连接。本文将介绍如何使用 Hapi 的 WebSocket 握手插件来实现 WebSocket 连接。
安装 Hapi WebSocket 握手插件
首先,我们需要安装 Hapi WebSocket 握手插件。可以使用 npm 命令来安装:
npm install @hapi/wss
创建 Hapi 服务器
接下来,我们需要创建一个 Hapi 服务器。可以使用以下代码来创建一个简单的服务器:
const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 3000, host: 'localhost' }); server.start();
创建 WebSocket 连接
现在,我们可以使用 Hapi WebSocket 握手插件来创建 WebSocket 连接。可以使用以下代码来创建一个简单的 WebSocket 连接:
// javascriptcn.com 代码示例 const Ws = require('@hapi/wss'); const ws = new Ws.Server({ server: server.listener }); ws.on('connection', (socket) => { console.log('WebSocket connected'); socket.send('Hello, WebSocket!'); });
这段代码创建了一个 WebSocket 服务器,并在客户端连接时输出一条消息。我们可以使用 socket.send()
方法向客户端发送消息。
处理 WebSocket 消息
在实际应用中,我们通常需要处理客户端发送的消息。可以使用以下代码来处理客户端发送的消息:
ws.on('connection', (socket) => { console.log('WebSocket connected'); socket.send('Hello, WebSocket!'); socket.on('message', (message) => { console.log('Received message:', message); }); });
这段代码在客户端发送消息时输出该消息。
发送广播消息
在某些情况下,我们需要向所有连接的客户端发送广播消息。可以使用以下代码来实现:
// javascriptcn.com 代码示例 const clients = new Set(); ws.on('connection', (socket) => { console.log('WebSocket connected'); socket.send('Hello, WebSocket!'); clients.add(socket); socket.on('message', (message) => { console.log('Received message:', message); }); socket.on('close', () => { console.log('WebSocket disconnected'); clients.delete(socket); }); }); function broadcast(message) { clients.forEach((client) => { client.send(message); }); }
这段代码使用 Set 来存储所有连接的客户端。在客户端连接时,将其添加到 Set 中。在客户端断开连接时,将其从 Set 中删除。使用 broadcast()
函数可以向所有连接的客户端发送广播消息。
总结
本文介绍了如何使用 Hapi 的 WebSocket 握手插件来实现 WebSocket 连接。我们学习了如何创建 WebSocket 连接、处理客户端发送的消息以及发送广播消息。希望本文对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65719cd2d2f5e1655da4dd3e