【发布时间】:2019-01-16 14:47:39
【问题描述】:
我在尝试将套接字连接到房间时遇到问题。房间的名称是socket.id,它是在连接时分配的。但是当这种情况发生时,它不会加入房间。可能是什么错误?
客户端代码:
var socket = io();
socket.on("connect", function() {
socket.emit("joinRoom", socket.id);
});
socket.on("agentMessage", function(msg) {
$('#messages').append("<div class='agent-messages'><p>" + msg + "</p></div>");
});
服务器代码:
io.on("connection", (socket) => {
let roomID;
socket.on("joinRoom", (socket_id) => {
roomID = socket_id;
socket.join(roomID);
socket.to(roomID).emit("agentMessage", "Welcome!");
});
socket.on("disconnect", () => {
socket.leave(socket_id);
});
});
【问题讨论】:
-
如果您的代码不仅仅是一个示例,我还想指出 socket.io 已经根据他们的套接字 ID 将每个用户添加到房间!因此,如果您需要另一个命名房间,问题/答案仍然有效,但如果您快速尝试向一个用户发送消息,只需使用:io.to(socket.id).emit("hello!");或者在这种特定情况下:io.to(socket.id).emit("agentMessage", "Welcome!");希望这对某人有帮助:)