Websockets是一种基于TCP连接的双向通信协议,可以在客户端和服务器之间建立实时的、持续的、双向的通信通道。这种通信模式适合实现一些需要实时性和即时性的场景,比如在线聊天、协同编辑等。
在本文中,我们将通过Express.js来实现Websockets。Express.js是一个流行的Node.js web应用程序框架,它可以帮助我们快速搭建web应用并实现各种功能。让我们开始吧。
前置条件
在开始之前,您需要安装Node.js和Express.js。
创建一个Express.js应用程序
我们从创建一个基本的Express应用程序开始,以便于我们能够添加Websockets支持。打开命令行窗口并输入以下命令:
mkdir express-websockets cd express-websockets npm init -y npm install express
接下来,打开index.js文件并将以下代码复制到该文件中:
const express = require('express'); const app = express(); app.get('/', function (req, res) { res.sendFile(__dirname + '/index.html'); }); app.listen(3000, function () { console.log('App listening on port 3000!'); });
这个应用程序包含一个HTTP服务器,运行在3000端口上,并返回一个index.html文件作为根路径的响应。接下来,我们将为我们的应用程序添加Websockets支持。
使用Websockets
现在来看一下如何在Express.js应用程序中使用Websockets。我们将使用wsnpm模块来实现此功能。打开命令行窗口并输入以下命令:
npm install ws
接下来,我们需要对我们的Express应用程序进行一些修改以支持Websockets。打开index.js文件并将以下代码添加到文件底部。
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function connection(ws) { console.log('New client connected'); ws.on('message', function incoming(data) { console.log('Client message:', data); }); ws.on('close', function() { console.log('Client disconnected'); }); ws.send('Welcome to the chat room!'); });
这段代码中,我们创建了一个WebSocket服务器,并在8080端口监听连接。当一个客户端连接上Websocket服务器后(使用浏览器客户端可以打开该链接),我们将在服务器端打印“New client connected”的消息。当客户端发送消息时,我们将在服务器端打印“Client message:message”的消息。当客户端断开连接时,我们将在服务器端打印“Client disconnected”消息。
同时,我们使用ws.send方法发送“Welcome to the chat room!”消息到客户端。现在我们已经完成了我们的应用程序设置。让我们启动它并测试。
测试
我们使用以下命令来启动我们的Express应用程序:
node index.js
在浏览器中打开http://localhost:3000链接,应该会看到一个带有“Welcome to Express.js websockets”标题的空页面。接下来,启动一个新终端,输入以下命令:
wscat -c ws://localhost:8080
这个命令将启动一个WebSocket客户端,连接到我们刚刚设置的WebSocket服务器。在客户端输入任何消息,例如:“hello”,将输出以下内容:
Connected (press CTRL+C to quit) > hello < Welcome to the chat room!
在服务器端,查看命令行终端,将会看到以下消息:
New client connected Client message: hello
恭喜您,您已经成功地使用Express.js实现了Websockets。
总结
在这篇文章中,我们使用Express.js和ws模块展示了如何实现Websockets。通过使用这种技术,我们现在可以轻松地构建实时的和基于事件的应用程序。
只要我们有一个WebSocket服务器和客户端,我们就可以在不同的平台上实现Websockets通信。在构建在线聊天室、游戏、协同编辑器等实时性的应用程序时,Websockets是一个非常有用的技术。希望这篇文章能够帮助您更好地理解如何在Express.js应用程序中使用Websockets。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a52203add4f0e0ffd9389a