在 Express.js 中如何使用 WebSocket?

阅读时长 7 分钟读完

在现代 web 应用中,实时数据交互已经成为了必不可少的一环。而 WebSocket 作为 HTML5 引入的标准,能够为实时数据交互提供强大的支持,因此得到了广泛的应用。在这篇文章中,我们将会讲解如何在 Express.js 中使用 WebSocket。

WebSocket 简介

WebSocket 是一种在单个 TCP 连接上进行全双工通信的应用层协议,允许客户端和服务器端进行实时数据交互。相比传统的 HTTP 请求-响应模式,WebSocket 更加高效和实时。WebSocket 的使用需要客户端和服务器端都支持,而且客户端和服务器端的接口要遵循一定的协议。

开始使用 WebSocket

在 Express.js 中使用 WebSocket 首先需要安装相应的包。常用的 WebSocket 包有 wssocket.io,本文使用 ws 作为演示。

在安装好之后,我们需要在 Express.js 中引入 ws 包,创建并监听 WebSocket 服务器。在实践中,WebSocket 服务器的创建往往需要在 Express 服务器启动后进行。

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

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

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

上述代码中,我们使用了 Express.js 创建了一个服务器,并将它监听在 3000 端口。然后,我们使用 ws 包创建了一个 WebSocket 服务器,将它与 Express.js 服务器进行了绑定。当有 WebSocket 连接时,服务器将会输出“WebSocket connection open”的消息。当有消息传来时,服务器会将其输出。最后,当 WebSocket 连接关闭时,服务器将会输出“WebSocket connection closed”的消息。

前端实现 WebSocket 连接

在前端实现 WebSocket 连接很简单,我们只需要调用 WebSocket 的构造函数即可。然后,我们可以监听 WebSocket 对象的事件,如 open、message 和 close。

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

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

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

上述代码中,我们使用了 ws://localhost:3000 地址进行 WebSocket 连接。当连接建立时,前端将会输出“WebSocket connection open”的消息。当服务器发来消息时,前端将会将其输出。最后,当 WebSocket 连接关闭时,前端将会输出“WebSocket connection closed”的消息。

WebSocket 应用示例

下面是一个简单的 WebSocket 应用示例。该应用通过 WebSocket 实现了类似聊天室的功能。

服务器端代码:

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

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

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

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

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

前端代码:

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

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

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

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

在该示例中,当一个 WebSocket 连接建立时,服务器将打印出“WebSocket connection open”的消息。当有消息传来时,服务器将会将其广播给所有客户端。当一个 WebSocket 连接关闭时,服务器将打印出“WebSocket connection closed”的消息。同时,在前端中,我们监听了表单 submit 事件,将消息以 JSON 格式发送给服务器。当从服务器收到消息时,我们将其渲染到聊天窗口中。

总结

在 Express.js 中使用 WebSocket 非常简单,我们只需要在服务器端监听 WebSocket 的连接,然后在前端中建立 WebSocket 连接即可。WebSocket 可以为实时数据交互提供强大的支持,是现代 web 应用中必不可少的一环。希望本文能够帮助读者更好地理解 WebSocket 的使用方法,并在实际开发中得到应用。

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

纠错
反馈