【发布时间】:2020-02-01 11:58:52
【问题描述】:
我正在两个客户之间构建一个非常基本的聊天系统。虽然服务器可以接收来自客户端的消息,但它不能将消息发送给客户端(服务器向客户端发送消息时不会触发receiveMessage 事件)。下面是我的代码客户端:
$("#send-msg").submit(function(e) {
e.preventDefault();
socket.emit("sendMsg", [$("#msg-text").val(), chattingWith]);
});
socket.on("receiveMessage", receiveMsg);
function receiveMsg(data) {
console.log("received msg"); // NOT OUTPUTTED
}
下面是我的服务器端代码:
var socket = io.connect();
var io = socket(server, { pingTimeout: 63000 });
io.sockets.on("connection", userConnect);
function userConnect(user) {
user.on("sendMsg", sendMsg);
function sendMsg(msgData) {
var msgContent = msgData[0];
var receiverId = msgData[1];
console.log("received message from " + receiverId); // ACTIVATED
io.to(receiverId).emit("receiveMessage", [msgContent, receiverId]);
}
}
【问题讨论】:
-
什么是
receiverId?它从何而来?为什么你认为io.to(receiverId)会到达正确的套接字?如果你想发回给发件人,你会做user.emit(...),因为在你的结构中user是发送这个消息的套接字。 -
尝试使用 user.emit("receiveMessage", [msgContent, receiverId]);
标签: javascript jquery node.js socket.io