【发布时间】:2017-10-25 17:25:13
【问题描述】:
我不明白为什么我的代码(如下)不起作用。在发送到套接字之前,console.log 在服务器端打印正确的 socket.id。那么为什么没有收到消息呢?
服务器端:
socket.on("connectToUser", function(userName, currentUserName, userID){
console.log("user wants to connect to: ",userID);
socket.to(userID).emit("connectNotification", currentUserName);
});
客户端:
socket.on("connectNotification", function(currentUserName){
console.log("correct user notified");
$("#connectToBox").append("Hallo");
});
socket.id 必须是原始的吗?我在连接时更改它,如下所示:
socket.on('connection', function(socket){
console.log('a user connected', socket.id);
var id = uuid.v4();
socket.id = id;
console.log(socket.id);
【问题讨论】:
-
我猜是的,它应该是原始的,不要使用
uuid.v4()操作它,只需使用从您的套接字返回的内容,看看它是否工作 -
让我们看看如何创建套接字变量!我认为你应该包含更多关于你的代码的信息,因为这不足以理解什么是错误的。
-
首先您需要检查您的客户端是否与您的服务器正确连接客户端:new io.connect("localhost:3000 your app url");
-
阅读:socket.io/docs/rooms-and-namespaces/#default-room(它将解释为什么更改
socket.id会破坏使用socket.to(...)联系特定用户的能力) -
我必须更改 id,因为我将它发送到 mysql 服务器数据库。否则,每次同一用户登录时 id 都会不同。
标签: javascript node.js sockets socket.io