socketio服务器实现实时通信
发布时间:2023-12-14 00:36:13
Socket.io是一个基于HTTP协议的实时通信框架,可用于构建实时聊天、数据传输等应用。
Server端实现:
1. 首先,使用Node.js创建一个服务器,引入socket.io库并监听服务器端口。
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
http.listen(3000, () => {
console.log('Server started on port 3000');
});
2. 在服务器端使用socket.io的connection事件处理客户端的连接。
io.on('connection', (socket) => {
console.log('A user connected');
// 监听客户端发送的消息
socket.on('chat message', (msg) => {
console.log('message: ' + msg);
// 广播消息给所有连接的客户端
io.emit('chat message', msg);
});
// 监听客户端断开连接事件
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
3. 在客户端引入socket.io库,连接到服务器并监听事件。
<script src="/socket.io/socket.io.js"></script>
<script>
// 连接到服务器
const socket = io();
// 发送消息给服务器
socket.emit('chat message', 'Hello, Server!');
// 监听服务器发送的消息
socket.on('chat message', (msg) => {
console.log('message: ' + msg);
});
// 断开连接
socket.on('disconnect', () => {
console.log('Disconnected from server');
});
</script>
使用例子:
1. 启动服务器:在终端中进入项目目录,执行node server.js启动服务器。
2. 打开浏览器,访问http://localhost:3000,可以看到控制台打印出Server started on port 3000的消息。
3. 打开浏览器的开发者工具,切换到控制台,可以看到A user connected的消息。
4. 在浏览器的控制台输入socket.emit('chat message', 'Hello, Server!');回车,可以看到服务器的控制台中打印出message: Hello, Server!的消息,并广播给所有客户端。
5. 在浏览器的控制台输入socket.disconnect();回车,可以看到服务器的控制台中打印出A user disconnected的消息。
以上就是使用Socket.io实现实时通信的基本步骤。通过监听客户端的连接和断开事件,以及发送和接收消息的事件,可以实现实时通信功能。
