在 Express.js 应用中使用 Socket.io

阅读时长 6 分钟读完

什么是 Socket.io

Socket.io 是一个基于 WebSocket 的 JavaScript 库,允许实时、双向通信。它能实现实时的数据推送和收取,解决了 HTTP 协议的无法保持连接的缺点。

在 Express.js 中引入 Socket.io

首先,需要在项目中安装 Socket.io 和 express.js:

然后在应用中引入:

客户端与服务端的通信

在服务端启动 Socket.io 后,可以用 'connection' 事件监听客户端的连接:

当一个客户端连接时,'connection' 事件会被触发,然后可以用 socket.on 方法监听客户端发送的事件,也可以用 socket.emit 方法向客户端发送信息。

在客户端,可以用以下方法连接到服务端:

然后可以用 socket.emit 方法发送事件,也可以用 socket.on 监听服务端发送的事件。

Socket.io 的事件

Socket.io 提供了一种事件驱动的编程方式。当服务端或客户端发送或接收到事件时,会触发相应的回调函数。比如:

Socket.io 支持自定义事件,只需要在服务端和客户端都定义相同的事件名称即可。

示范代码

以下是一个完整的实例,演示了如何在 Express.js 中使用 Socket.io 进行通信,该示例当客户端发送消息时,服务端会将其广播给其他连接的客户端。

server.js

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

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

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

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

index.html

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

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

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

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

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

该示例可以通过以下命令启动:

浏览器访问 http://localhost:3000 即可。在不同的浏览器窗口或标签页中打开该地址,发送的消息会在其他窗口或标签页中实时更新。可以用该示例学习 Socket.io 的使用方法,也可以用作参考实现自己的实时通信应用。

总结

在 Express.js 应用中使用 Socket.io 可以很方便地实现实时双向通信的功能。可以用 Socket.io 提供的事件机制进行服务端和客户端的通信,大大降低了实现的复杂度。该文章是一篇深度学习指南,希望对读者有所帮助。

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

纠错
反馈