gpt4 book ai didi

javascript - 我的私有(private)消息不适用于 socket.io

转载 作者:行者123 更新时间:2023-12-03 04:15:10 25 4
gpt4 key购买 nike

我不明白为什么我的代码(下面)不起作用。 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);

最佳答案

connection 事件触发后更改 socket.id 可能为时已晚,因为此时 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com