详解如何在 Express.js 中使用 WebSocket

WebSocket 是一种在单个 TCP 连接上进行双向通信的协议,它可以在浏览器和服务器之间实现实时通信。在前端开发中,WebSocket 的应用场景非常广泛,特别是在轻量实时通信、多人游戏、在线聊天等方面。本文将深入探讨如何在 Express.js 中使用 WebSocket。

什么是 WebSocket?

WebSocket 是 HTML5 开始提供的一种浏览器与服务器之间进行双向通信的技术,它的出现使得浏览器可以像传统应用一样实现实时通信。WebSocket 采取非常简单的协议来实现两个进程之间的通信,通信过程中只需要在客户端和服务端之间建立一个连接,这个连接要保持连接状态很长的时间,然后进行数据传输,在数据传输过程中可以实现数据的实时更新,这就是 WebSocket 最大的优势。

常见的 WebSocket 应用有在线聊天、实时统计数据、游戏等。

为什么要使用 WebSocket?

在传统的网页中,为了实现实时通信,我们需要通过不停地进行轮询来获取服务端数据。这种方式不仅耗时耗能,而且实时性不高。而使用 WebSocket 则不需要轮询,而直接建立一条长连接,减少了网络传输的开销,提高了效率。

使用 Express.js 中的 WebSocket

在 Express.js 中使用 WebSocket 需要使用一个叫做 ws 的库。首先,我们需要使用 npm 安装 ws:

在使用 ws 之前,我们需要用 Express.js 创建并启动一个 http 服务器,然后在服务器上开启 WebSocket 服务。

创建 HTTP 服务器

首先,我们可以使用 Express.js 创建一个 http 服务器:

在上面的代码中,我们创建了一个 Express.js 应用程序,然后定义了一个 GET 请求处理程序,返回一条 “Hello, World!” 消息。接下来,我们使用 app.listen() 启动了一个 HTTP 服务器,在本地的端口 3030 上监听请求。

使用 WebSocket

现在,我们可以在服务器上开启 WebSocket 服务了。我们先将 http 服务器传递给 ws,然后使用 ws 的 WebSocket.Server 类创建一个 WebSocket 服务器:

在上面的代码中,我们首先引入了 ws 库,然后创建了一个 WebSocket 服务器对象 wss;使用 wss.on('connection', ...) 监听客户端连接事件,在客户端连接时会触发回调函数,函数参数 ws 代表客户端连接对象;使用 ws.on('message', ...) 监听客户端发送的消息,在接收到消息后会触发回调函数,函数参数 message 是客户端发送的消息;使用 ws.on('close', ...) 监听客户端连接关闭事件,在连接关闭时会触发回调函数。

这样,我们就成功地在 Express.js 中开启了 WebSocket 服务。

在客户端中使用 WebSocket

完成了服务器端的 WebSocket 服务,我们还需要在客户端中使用 WebSocket。在浏览器中使用 WebSocket 只需要创建一个 WebSocket 对象即可:

在上面的代码中,我们先创建了一个 WebSocket 对象,并指定 WebSocket 服务器的地址。当连接成功时,会触发 ws.addEventListener('open', ...) 回调函数;当接收到客户端发送的消息时,会触发 ws.addEventListener('message', ...) 回调函数;当连接关闭时,会触发 ws.addEventListener('close', ...) 回调函数。

到此为止,我们已经成功地在 Express.js 中使用 WebSocket 实现了双向通信。

总结

在本文中,我们主要讲解了在 Express.js 中使用 WebSocket。WebSocket 可以在浏览器和服务器之间实现实时通信,使用 WebSocket 可以减小网络传输的开销,提高效率。在具体实现时,我们需要使用 ws 库创建 WebSocket 服务,并在客户端和服务端使用标准的 WebSocket 接口进行通信。希望本文对您了解 WebSocket 以及在 Express.js 中使用 WebSocket 有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653772527d4982a6ebff55cb


纠错
反馈