Socket.io 是一款基于 Node.js 的实时网络库,它能够提供 WebSocket 标准的双向通信能力,同时还支持长轮询和其他实时通信方式,被广泛应用于在线游戏、聊天室、实时协作编辑等场景中。本文将介绍如何使用 Socket.io 实现一个简单的即时通讯应用。
安装 Socket.io
首先需要安装 Socket.io,使用 npm 统一管理包版本。在项目目录下执行以下命令:
npm install --save socket.io
创建服务器
创建一个 Node.js 服务器,使用 Express 框架方便处理请求和响应。此外,需要使用 Socket.io 将服务器实例与 Socket 连接:
const app = require('express')() const http = require('http').createServer(app) const io = require('socket.io')(http) http.listen(3000, () => { console.log('server listen on port 3000') })
客户端连接
接下来,需要添加连接事件监听,当有客户端连接时触发回调函数,此时可以向客户端发送一条欢迎消息:
io.on('connection', (socket) => { console.log('a user connected') socket.emit('welcome', 'Welcome to Socket.io chat room!') })
在该事件回调函数中,socket 表示当前连接的 Socket 实例,可以使用其 emit 方法向客户端发送消息,客户端也可以使用其 on 方法监听服务端发送的消息。
客户端断开
当有客户端断开连接时,需要处理相应的事件,释放资源等:
socket.on('disconnect', () => { console.log('user disconnected') })
在该事件回调函数中,可以处理如释放资源,删除用户等操作。
客户端消息传递
客户端可以通过 emit 方法向服务器发送消息,处理相应的事件即可完成双向通信的目标:
socket.on('message', (msg) => { console.log(`message: ${msg}`) io.emit('message', `user: ${msg}`) })
在该事件回调函数中,msg 表示客户端发送的消息内容,调用 io.emit 方法将消息发送给所有已连接的客户端。
示例代码
完整的基于 Socket.io 的即时通讯示例代码如下:
-- -------------------- ---- ------- ----- --- - -------------------- ----- ---- - --------------------------------- ----- -- - -------------------------- ------------ ----- ---- -- - ---------------------- - -------------- -- ------------------- -------- -- - -------------- ---- ----------- ---------------------- -------- -- --------- ---- ------- ----------------------- -- -- - ----------------- -------------- -- -------------------- ----- -- - --------------------- -------- ------------------ ------ -------- -- -- ----------------- -- -- - ------------------- ------ -- ---- ------ --
总结
本文主要介绍了如何使用 Socket.io 实现一个简单的即时通讯应用,涉及了 Socket 连接、断开、消息传递等方面,读者可以根据该示例代码基于 Socket.io 开发更加复杂的应用,如聊天室、实时协作编辑等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64acc7aa48841e98948cc0fb