推荐答案
发送消息
在 Socket.IO 中,使用 socket.emit(eventName, data) 方法发送消息。eventName 是自定义的事件名称,data 是要发送的数据。
// 客户端发送消息
socket.emit('chat message', 'Hello, Server!');
// 服务器端发送消息
io.on('connection', (socket) => {
socket.emit('welcome', 'Welcome to the chat!');
});接收消息
使用 socket.on(eventName, callback) 方法接收消息。eventName 是事件名称,callback 是接收到消息后的回调函数。
// www.javascriptcn.com code example
// 客户端接收消息
socket.on('welcome', (message) => {
console.log('Received:', message);
});
// 服务器端接收消息
io.on('connection', (socket) => {
socket.on('chat message', (message) => {
console.log('Received:', message);
});
});本题详细解读
Socket.IO 简介
Socket.IO 是一个基于事件的实时双向通信库,常用于构建实时应用程序,如聊天应用、实时通知等。它支持 WebSocket 协议,并在不支持 WebSocket 的情况下自动降级为其他协议(如轮询)。
发送消息
在 Socket.IO 中,emit 方法用于发送消息。eventName 是自定义的事件名称,用于标识消息的类型。data 是要发送的数据,可以是字符串、对象、数组等。
- 客户端发送消息:客户端通过
socket.emit方法向服务器发送消息。 - 服务器端发送消息:服务器通过
socket.emit方法向客户端发送消息。
接收消息
on 方法用于监听特定事件的消息。当接收到指定事件的消息时,回调函数会被触发,并传入接收到的数据。
- 客户端接收消息:客户端通过
socket.on方法监听服务器发送的消息。 - 服务器端接收消息:服务器通过
socket.on方法监听客户端发送的消息。
示例代码
以下是一个简单的聊天应用示例:
// www.javascriptcn.com code example
// 服务器端代码
const io = require('socket.io')(3000);
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('user disconnected');
});
});
// 客户端代码
const socket = io('http://localhost:3000');
socket.on('connect', () => {
console.log('connected to server');
});
socket.on('chat message', (msg) => {
console.log('Received:', msg);
});
// 发送消息
socket.emit('chat message', 'Hello, Server!');在这个示例中,客户端连接到服务器后,可以发送和接收聊天消息。服务器接收到消息后,会将消息广播给所有连接的客户端。