Socket.io 是一个基于 Node.js 的实时双向通信库,能够实现实时通讯功能。而 Express 是一个 Node.js 的 web 框架,提供了简单的路由、中间件等功能。本文将介绍如何将 Socket.io 与 Express 框架配合使用,实现实时通讯功能。
安装
首先需要安装 Socket.io 和 Express 框架,可以使用 npm 进行安装:
--- ------- --------- -------
创建 Express 应用
在创建 Express 应用之前,需要先导入 Socket.io 库,可以在 app.js 文件中添加如下代码:
----- ------- - ------------------- ----- --- - ---------- ----- ---- - ---------------------------- ----- -- - ---------------------------
其中,http 是 Node.js 自带的 http 模块,用于创建一个 http 服务器。io 则是 Socket.io 的核心对象,用于管理 Socket.io 的连接、事件等。
创建 Socket.io 连接
在 Express 应用中,需要为每个客户端创建一个 Socket.io 连接。可以在 app.js 文件中添加如下代码:
------------------- ---------------- - -------------- ---- ------------ ----------------------- ---------- - ----------------- --------------- --- ---
其中,io.on('connection') 表示当有新的 Socket.io 连接时,执行后面的回调函数。回调函数中的 socket 表示当前连接的 Socket 对象。在上面的代码中,当有新的连接时,在控制台输出 'a user connected',当连接断开时,在控制台输出 'user disconnected'。
发送消息
在 Socket.io 中,可以使用 emit() 方法发送消息。在 app.js 文件中,可以添加如下代码:
------------------- ---------------- - -------------- ---- ------------ ----------------------- ---------- - ----------------- --------------- --- --------------- --------- ------------- - --------------------- - - ----- ------------- --------- ----- --- ---
上面的代码中,socket.on('chat message') 表示当客户端发送 'chat message' 消息时,执行后面的回调函数。回调函数中的 msg 表示客户端发送的消息。在控制台输出 'message: ' + msg,然后使用 io.emit('chat message', msg) 方法将消息发送给所有客户端。
在客户端中,可以使用以下代码接收服务器发送的消息:
--- ------ - ----- --------------------------- - ----------------- --------- --------------- ---------------- ------ ------ --- --------------- --------- ------------- - ------------------------------------------- ---
上面的代码中,var socket = io() 表示创建一个 Socket.io 连接。$('form').submit() 表示当用户提交表单时,执行后面的回调函数。回调函数中的 socket.emit('chat message', $('#m').val()) 表示将用户输入的消息发送给服务器。socket.on('chat message') 表示当服务器发送 'chat message' 消息时,执行后面的回调函数。回调函数中的 msg 表示服务器发送的消息。$('#messages').append($('
总结
本文介绍了如何将 Socket.io 与 Express 框架配合使用,实现实时通讯功能。通过本文的介绍,读者可以了解 Socket.io 和 Express 的基本用法,并能够在自己的项目中使用 Socket.io 实现实时通讯功能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d971191886fbafa46ff0a4