WebSockets 是一种在浏览器和服务器之间进行双向通信的技术。与 HTTP 请求和响应不同,WebSockets 可以保持连接活跃,并实时更新数据而无需刷新页面。Express.js 是一个流行的 Node.js Web 框架,支持许多功能以简化 Web 开发。本文将介绍如何在 Express.js 中使用 WebSockets 以进行实时通信。
WebSockets 是什么?
WebSockets 是一种客户端/服务器协议,可以在 Web 浏览器和 Web 服务器之间实现双向通信。它是通过一个持久化的 TCP 连接建立的,这意味着客户端和服务器可以保持连接,并且可以在任何时候通过该连接发送消息。这与 HTTP 协议不同,HTTP 请求和响应是短暂且无状态的,每个请求都必须重新建立连接,即使在同一页面上也是如此。
WebSockets 旨在解决 Web 应用程序中的实时数据交换问题。它使开发人员可以轻松地将实时数据传输到浏览器中,而无需轮询或定时器。
Express.js 中使用 WebSockets
在 Express.js 中添加 WebSockets 的基本步骤如下:
引入
ws
模块ws
是一个支持 WebSockets 协议的第三方 npm 模块。const WebSocket = require('ws');
创建 WebSocket 服务器
WebSockets 服务器是在 HTTP 服务器之外独立运行的。在 Express.js 中,WebSocket 服务器可以创建于 HTTP 服务器相同的端口。
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 });
接收连接请求
当浏览器客户端连接到 WebSocket 服务器时,将触发
connection
事件。const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Connected'); });
发送和接收消息
一旦浏览器客户端与服务器连接成功,它就可以发送和接收消息。
// javascriptcn.com 代码示例 const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Connected'); socket.on('message', (message) => { console.log(`Received message ${message}`); socket.send(`Received message ${message}`); }); });
完整的示例代码如下:
// javascriptcn.com 代码示例 const express = require("express"); const WebSocket = require("ws"); const app = express(); const server = require('http').createServer(app); const wss = new WebSocket.Server({ server }); wss.on("connection", (socket) => { console.log("Connected"); socket.on('message', (message) => { console.log(`Received message ${message}`); socket.send(`Received message ${message}`); }); }); server.listen(8080, function () { console.log('Listening on port 8080'); });
WebSockets 的应用
WebSockets 可以用于许多不同的应用程序场景。以下是几个示例:
- 即时聊天:当用户键入消息时,它可以实时传输到服务器并通过 WebSocket 发送到所有其他连接的客户端。
- 多人游戏:通过 WebSocket 建立的持久连接可以用于实时多人游戏,如卡片游戏或棋盘游戏等。
- 电子商务应用程序:WebSockets 可以用于实时更新产品信息、库存等,在用户购物的情况下尤为实用。
总结
本文介绍了如何在 Express.js 中使用 WebSockets 进行实时通信,并提供了示例代码。WebSockets 是一种可在浏览器和服务器之间进行双向通信的技术,非常适合实时更新数据而无需刷新页面。WebSockets 可以应用于多种应用程序场景,包括即时聊天、多人游戏和电子商务应用程序等。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653f1fc67d4982a6eb8a650e