前言
现今互联网时代对于实时通信的要求越来越高,而 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它提供了一个事件驱动、非阻塞 I/O 的模型,使它成为了构建实时 Web 应用的理想平台。本文中将会介绍如何使用 WebSocket 在 Node.js 中实现实时通信。
WebSocket 是什么?
WebSocket 是一种网络通信协议,可以在单个 TCP 连接上提供全双工通信信道。WebSocket 协议使得在 Web 应用程序中开发实时信息交换变得更加容易。
WebSocket 与 HTTP 的区别
HTTP 协议是无状态的,每个请求和响应都是独立的。由于这种无状态的特性,HTTP 协议对于服务器与客户端之间的交互是不利的。如果需要经常性的更新数据,那么不得不通过轮询来不断的获取更新,这样不仅带来了非常多的延迟,而且也会大大降低应用程序的性能。
而 WebSocket 协议则不同,WebSocket 协议通过一个 HTTP 握手的方式来启动一个与服务器持久连接的通信信道。这个信道是全双工的,可以实现服务器与客户端之间的实时通信。WebSocket 协议相当于将一个 TCP 连接划分为两个信道,一个用于客户端发送信息,一个用于服务器发送信息,从而实现实时的双向通信。
在 Node.js 中使用 WebSocket
在 Node.js 中使用 WebSocket 需要借助 ws
库。ws
是一个简单、快速、稳定、高效的 WebSocket 实现。
安装 ws
库:
npm install ws
接下来我们看一个实现 WebSocket 实时通信的简单示例:
-- -------------------- ---- ------- -- ------ ----- --------- - -------------- ----- --- - --- ------------------ ----- ---- --- -------------------- -------- -------------- - ------------------------- ---------------- -------- -------------- - ------------------ ---------------------------- ------------ - -- ------------------ --- --------------- - ------------------ - --- --- ---
在 app.js
中,我们首先引入 ws
库,然后创建一个 WebSocket 服务器,设置端口号为 8080。
当客户端连接到服务器时,wss
触发 connection
事件,其中 ws
表示 WebSocket 连接。这个连接可以用于接收和发送消息。当客户端发送消息时,ws
触发 message
事件,并将消息参数传递给回调函数,我们可以在此回调函数中将消息广播给所有连接了服务器的客户端。
在客户端页面中,我们添加以下代码:
-- -------------------- ---- ------- -- ---------- --------- ----- ------ ------ ----- ---------------- ---------------- ------------ ------- ------ --- ------------------- ----- ---------- ------ ----------- ---------- ---------- --------------------- ------- -------- ----- -- - --- --------------------------------- --------------------------- -------- ------- - ------------------------- --- ------------------------------ -------- ------- - ----- -------- - ------------------------------------ ----- ------- - ----------------------------- ----- ------- - ------------------------------------ ----------------------------- ------------------------------ --- ----- ---- - -------------------------------- ----- ----- - --------------------------------- ------------------------------- -------- ------- - ----------------------- ----- ------- - ------------ ----------------- ----------- - --- --- --------- ------- -------
在客户端我们首先创建一个 WebSocket 连接,然后监听 open
事件,当连接成功后将打印 connected
。然后我们监听 message
事件,当接收到来自服务器的消息时,将其显示在页面中。
在页面中添加一个表单,当用户提交表单时,我们获取输入框中的数据,向服务器发送消息。接着将输入框重置为空。
启动服务器:
node app.js
在浏览器中打开 index.html
文件,您会看到一个简单的聊天应用程序。通过这个应用程序,您可以使用 WebSocket 在服务器和客户端之间进行实时通信。
总结
本文介绍了 WebSocket 在 Node.js 中的使用,WebSocket 是一种可以满足实时通信需求的协议,在 Node.js 中可以借助 ws
库轻松实现。实现一个简单的聊天应用程序只是 WebSocket 的冰山一角,WebSocket 还有很多用途,包括实时游戏、在线编辑和协作、股票行情和实时监控等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab81dc48841e989475777e