用 Node.js 创建 WebSocket 服务器

阅读时长 6 分钟读完

WebSocket 是一种基于 TCP 协议的双向通信协议,它可以在浏览器和服务器之间建立实时通信的连接。在前端领域,WebSocket 可以用于实现实时聊天、在线游戏等应用。本文将介绍如何用 Node.js 创建 WebSocket 服务器,以及一些相关的知识点和示例代码。

WebSocket 的工作原理

WebSocket 的工作原理比较简单,它需要客户端与服务器之间先建立一个 HTTP 连接,然后通过 HTTP 升级协议的方式将该连接升级为 WebSocket 连接。一旦 WebSocket 连接建立成功,客户端和服务器就可以通过该连接进行双向通信。

在 Node.js 中创建 WebSocket 服务器需要使用第三方模块 ws。安装 ws 模块可以使用 npm 命令:

以下是一个简单的示例代码,它创建了一个 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 连接的状态,有以下几个值:CONNECTINGOPENCLOSINGCLOSED

示例代码

下面是一个简单的前端示例代码,它通过 WebSocket 与后端服务器进行通信,并实现了一个简单的在线聊天应用:

-- -------------------- ---- -------
--------- -----
------
------
  ----- ----------------
  ---------------- ------------
-------
------
  ------ ----------- ------------------ ----------------- ---- ------------
  ------- ------------------------------
  --- -----------------------

  --------
    ----- ------ - --- ---------------------------------

    ------------------------------- -- -- -
      ---------------------- -- ---------
    ---

    ---------------------------------- ------- -- -
      ----- ------- - -----------
      ----- -- - -----------------------------
      -------------- - --------
      --------------------------------------------------------
    ---

    ---------------------------------------------------------------- -- -- -
      ----- ------- - -----------------------------------------------
      ---------------------
      ---------------------------------------------- - ---
    ---
  ---------
-------
-------

在上面的代码中,我们通过 new WebSocket('ws://localhost:8080') 创建了一个 WebSocket 连接,并监听了 openmessage 事件。当连接成功建立时,会触发 open 事件,我们可以在该事件回调函数中进行一些初始化操作。当接收到来自服务器的消息时,会触发 message 事件,我们可以在该事件回调函数中将消息显示在页面上。

在页面中,我们通过输入框和按钮实现了发送消息的功能。当用户点击发送按钮时,我们通过 socket.send(message) 将消息发送到服务器。

总结

本文介绍了如何用 Node.js 创建 WebSocket 服务器,并提供了一些相关的知识点和示例代码。WebSocket 在实时通信方面有很大的优势,可以用于实现在线聊天、在线游戏等应用。如果您还没有使用过 WebSocket,那么不妨尝试一下吧!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f82991d10417a2223a32e3

纠错
反馈