WebSocket 是一种基于 TCP 协议的双向通信协议,它可以在浏览器和服务器之间建立实时通信的连接。在前端领域,WebSocket 可以用于实现实时聊天、在线游戏等应用。本文将介绍如何用 Node.js 创建 WebSocket 服务器,以及一些相关的知识点和示例代码。
WebSocket 的工作原理
WebSocket 的工作原理比较简单,它需要客户端与服务器之间先建立一个 HTTP 连接,然后通过 HTTP 升级协议的方式将该连接升级为 WebSocket 连接。一旦 WebSocket 连接建立成功,客户端和服务器就可以通过该连接进行双向通信。
在 Node.js 中创建 WebSocket 服务器需要使用第三方模块 ws
。安装 ws
模块可以使用 npm 命令:
npm install ws
以下是一个简单的示例代码,它创建了一个 WebSocket 服务器并监听 8080 端口:
-- -------------------- ---- ------- ----- --------- - -------------- ----- ------ - --- ------------------ ----- ---- --- ----------------------- -------- -- - ------------------- ------------ -------------------- --------- -- - --------------------- -------- ------------- -- ---- --- ------- ---- -- --- ------ --------------------- --- ------------------ -- -- - ------------------- --------------- --- ---
在上面的代码中,我们使用 WebSocket.Server
类创建了一个 WebSocket 服务器,并通过 on
方法监听 connection
事件。每当有新的客户端连接到服务器时,就会触发 connection
事件,我们可以在该事件回调函数中处理客户端的连接、消息和断开等操作。
在 connection
事件回调函数中,我们使用 socket
参数表示客户端与服务器之间的连接。通过监听 message
事件,我们可以处理客户端发送的消息,并通过 send
方法将消息发送回客户端。当客户端断开连接时,会触发 close
事件,我们可以在该事件回调函数中进行清理操作。
WebSocket 的 API
WebSocket 的 API 比较简单,下面是一些常用的 API:
new WebSocket(url[, protocols])
:创建一个 WebSocket 连接,url
参数表示 WebSocket 服务器的地址,protocols
参数表示可接受的子协议。socket.send(data[, options][, callback])
:向服务器发送消息,data
参数表示要发送的消息,options
参数表示可选的选项,callback
参数表示发送完成后的回调函数。socket.close([code[, reason]])
:关闭 WebSocket 连接,code
参数表示关闭代码,reason
参数表示关闭原因。socket.readyState
:表示 WebSocket 连接的状态,有以下几个值:CONNECTING
、OPEN
、CLOSING
、CLOSED
。
示例代码
下面是一个简单的前端示例代码,它通过 WebSocket 与后端服务器进行通信,并实现了一个简单的在线聊天应用:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ---------------- ------------ ------- ------ ------ ----------- ------------------ ----------------- ---- ------------ ------- ------------------------------ --- ----------------------- -------- ----- ------ - --- --------------------------------- ------------------------------- -- -- - ---------------------- -- --------- --- ---------------------------------- ------- -- - ----- ------- - ----------- ----- -- - ----------------------------- -------------- - -------- -------------------------------------------------------- --- ---------------------------------------------------------------- -- -- - ----- ------- - ----------------------------------------------- --------------------- ---------------------------------------------- - --- --- --------- ------- -------
在上面的代码中,我们通过 new WebSocket('ws://localhost:8080')
创建了一个 WebSocket 连接,并监听了 open
和 message
事件。当连接成功建立时,会触发 open
事件,我们可以在该事件回调函数中进行一些初始化操作。当接收到来自服务器的消息时,会触发 message
事件,我们可以在该事件回调函数中将消息显示在页面上。
在页面中,我们通过输入框和按钮实现了发送消息的功能。当用户点击发送按钮时,我们通过 socket.send(message)
将消息发送到服务器。
总结
本文介绍了如何用 Node.js 创建 WebSocket 服务器,并提供了一些相关的知识点和示例代码。WebSocket 在实时通信方面有很大的优势,可以用于实现在线聊天、在线游戏等应用。如果您还没有使用过 WebSocket,那么不妨尝试一下吧!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f82991d10417a2223a32e3