Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的私人消息无法与socket.io一起使用_Javascript_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 我的私人消息无法与socket.io一起使用

Javascript 我的私人消息无法与socket.io一起使用,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我不明白为什么我下面的代码不起作用。在发送到套接字之前,console.log在服务器端打印正确的socket.id。那么,为什么没有收到消息 服务器端: socket.onconnectToUser、functionuserName、currentUserName、userID{ console.loguser要连接到:,userID; socket.touserID.emitconnectNotification,currentUserName; }; 客户端: socket.OnConne

我不明白为什么我下面的代码不起作用。在发送到套接字之前,console.log在服务器端打印正确的socket.id。那么,为什么没有收到消息

服务器端:

socket.onconnectToUser、functionuserName、currentUserName、userID{ console.loguser要连接到:,userID; socket.touserID.emitconnectNotification,currentUserName; }; 客户端:

socket.OnConnectionNotification,functioncurrentUserName{ console.logcorrect通知用户; $connectToBox.appendHallo; }; socket.id必须是原始的吗?我正在连接时更改它,如下所示:

socket.on'connection',functionsocket{ console.log'a user connected',socket.id; var id=uuid.v4; socket.id=id; console.logsocket.id;在触发连接事件后更改socket.id可能太晚了,因为此时,socket.io已经基于原始id完成了一些内部管理

如果您想使用自己的id,则应使用免责声明:我对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);
  });

});

我想是的,它应该是原始的,不要使用uuid.v4操作它,只使用从套接字返回的内容,看看它是否工作。让我们看看如何创建套接字变量!我认为您应该包含更多关于代码的信息,因为这不足以理解错误。首先,您需要检查您的客户端是否为conn正确连接服务器客户端:新建io。连接应用程序url;阅读以下内容:这将解释为什么更改socket.id会破坏使用socket与特定用户联系的能力。要…我必须更改id,因为我要将其发送到mysql服务器数据库。否则,同一用户每次登录时id都会不同。实际上使用连接时传递给客户端的原始id进行加密。工作非常完美!