在Socket.IO中,您可以使用以下内容向 * everyone * 发送消息:
const io = require("socket.io");
io.broadcast.emit("message", data);
您还可以使用类似的模式向 *除了一个人* 之外的所有人发送消息:
const io = require("socket.io");
io.on("connection", function(socket) {
socket.on("message", function(msg) {
socket.broadcast.emit("message", msg);
});
});
这允许创建简单的聊天应用程序等
现在假设我在另一个文件中定义了套接字处理程序:
// index.js
const io = require("socket.io");
const handler = require("./handler.js");
io.on("connection", function(socket) {
socket.on("message", handler);
});
// handler.js
module.exports = function(socket) {
socket.broadcast.emit("message", msg);
}
在这种情况下,我想向所有人发送消息 - 包括发起消息的套接字。因此,给定socket
,如何访问其父io
对象?
我尝试了一些类似的事情:
socket.io.broadcast
socket.server.broadcast
socket.server.eio.broadcast
etc
但这些似乎都不起作用
答案 0 :(得分:2)
如何将io
传递给处理程序?最初处理程序函数会接受有效负载(处理程序中的msg
)而不是套接字?
// index.js
const io = require("socket.io");
const handler = require("./handler.js");
io.on("connection", function(socket) {
socket.on("message", data => handler(io, data) );
});
// handler.js
module.exports = function(socket, msg) {
socket.broadcast.emit("message", msg);
}