如何在 Node.js 中利用 WebSocket 进行双向通信

WebSocket 是一种基于 TCP 协议实现的双向通信协议,它在客户端和服务器之间建立了一条持久连接,在一定程度上可以取代传统的轮询技术,实现更高效的实时通信。利用 Node.js 可以很方便地实现 WebSocket 通信,本文将着重介绍如何在 Node.js 中利用 WebSocket 进行双向通信。

WebSocket 的基本原理

在传统的 HTTP 协议中,客户端向服务器发送请求,服务器响应请求后立即关闭连接。这种模式对于实时通信并不友好,因为客户端需要反复向服务器发送请求,浪费带宽和资源。

WebSocket 出现的背景是为了解决这个问题。WebSocket 可以在客户端和服务器之间建立一条持久连接,客户端和服务器之间的通信消息可以直接在这条连接上进行,从而实现实时通信。

WebSocket 协议基于 TCP 协议。与传统的 HTTP 协议不同,WebSocket 协议通过一个类似 HTTP 的握手过程建立连接。建立连接后,双方可以直接发送和接收数据,而无需再次进行握手。

在 Node.js 中使用 WebSocket

Node.js 提供了多个支持 WebSocket 的库,如 wssocket.io 等。本文将以 ws 库为例来介绍如何在 Node.js 中使用 WebSocket。

安装 ws

首先需要安装 ws 库,可以使用 npm 安装:

创建 WebSocket 服务器

在 Node.js 中创建 WebSocket 服务器很简单,只需要几行代码即可:

上面的代码创建了一个 WebSocket 服务器,监听 8080 端口。当有客户端连接到服务器时,服务器会触发 connection 事件,回调函数中的 ws 是表示与客户端的 WebSocket 连接对象。

在回调函数中可以监听 message 事件,用于接收客户端发送的消息。当服务器需要向客户端发送消息时,可以使用 send 方法。上面的代码会向客户端发送一个字符串 'something'

创建 WebSocket 客户端

在 Node.js 中创建 WebSocket 客户端也很简单,代码如下:

上面的代码创建了一个 WebSocket 客户端,并连接到服务器的 8080 端口。当连接建立成功时,会触发 open 事件,可以在事件回调函数中发送消息。

在客户端中同样可以监听 message 事件,用于接收服务器发送的消息。

代码示例

下面是一个完整的实例,通过浏览器发送消息到 Node.js 服务器,服务器再将消息回显给浏览器。

服务器代码

客户端代码

总结

本文介绍了 WebSocket 的基本原理和在 Node.js 中使用 WebSocket 进行双向通信的方法。通过 ws 库可以方便地创建 WebSocket 服务器和客户端,实现实时通信。WebSocket 技术应用广泛,可以用于在线聊天、游戏、股票行情等应用场景。

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


纠错
反馈