我不明白为什么我的代码(下面)不起作用。在发送到套接字之前,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);
最佳答案
在触发socket.id
事件后更改connection
可能为时已晚,因为在这一点上socket.io
已经根据原始ID进行了一些内部整理。
如果要使用自己的ID,则应改用middleware function(免责声明:我对socket.io
的内部知识不太熟悉,但是我放在一起的一些示例代码似乎可行):
let server = require('socket.io')(...);
server.use(function(socket, next) {
socket.id = uuid.v4();
next();
}).on('connection', function(socket) {
socket.on("connectToUser", function(userName, currentUserName, userID){
console.log("user wants to connect to: ",userID);
socket.to(userID).emit("connectNotification", currentUserName);
});
});
关于javascript - 我的私有(private)消息不适用于socket.io,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44174099/