Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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_Socket.io - Fatal编程技术网

Javascript Socket.io,向您自己发送消息

Javascript Socket.io,向您自己发送消息,javascript,socket.io,Javascript,Socket.io,Socket.io不显示通过ip发送的消息。 比如说 var id = 333; socket.broadcast.to(id).emit('user', user); 它工作正常,但消息只在客户端#333,但用户比发送的消息,在消息客户端没有副本 我想用这种方法解决,但它不起作用 socket.broadcast.to(socket.id).emit('user', user); 为什么?如果没有更多的代码,很难说出您想要什么,但有一件事是确定的,为了向单个用户发送消息,您必须使用套接字对

Socket.io不显示通过ip发送的消息。 比如说

var id = 333;
socket.broadcast.to(id).emit('user', user);
它工作正常,但消息只在客户端#333,但用户比发送的消息,在消息客户端没有副本

我想用这种方法解决,但它不起作用

socket.broadcast.to(socket.id).emit('user', user);

为什么?

如果没有更多的代码,很难说出您想要什么,但有一件事是确定的,为了向单个用户发送消息,您必须使用
套接字对象并使用
套接字。emit

据我所知,
广播
仅用于告诉除你自己以外的所有人

在跟踪用户方面,我通常会做以下几点:

    var userList = [];
io.on('connection', function (socket) {

    socket.on('userData', function (userDetails) {
        userDetails.socket = socket;
        userList[userDetails.id] = userDetails
    });
});
基本上,当用户连接到我的套接字并且该用户的页面已完全加载时,它会发送其id(或令牌,如果您愿意),然后我将该用户的
套接字映射到列表中,以便如果我希望发送给该用户,我可以快速地再次提取它


例如:

user.id=33
连接到我们的服务器

一旦加载,用户将向我们的服务器发出
userData
函数

然后将插座取出并放入第33行的列表中

需要时,我们可以使用以下代码获取用户的
套接字

socket = userList[33];
或者如果我们有目标:

socket = userList[user.id];

我希望这对您有所帮助。

如果没有更多的代码,很难说出您想要什么,但有一点是肯定的,为了向单个用户发送消息,您必须使用
套接字对象并使用
套接字。emit

据我所知,
广播
仅用于告诉除你自己以外的所有人

在跟踪用户方面,我通常会做以下几点:

    var userList = [];
io.on('connection', function (socket) {

    socket.on('userData', function (userDetails) {
        userDetails.socket = socket;
        userList[userDetails.id] = userDetails
    });
});
基本上,当用户连接到我的套接字并且该用户的页面已完全加载时,它会发送其id(或令牌,如果您愿意),然后我将该用户的
套接字映射到列表中,以便如果我希望发送给该用户,我可以快速地再次提取它


例如:

user.id=33
连接到我们的服务器

一旦加载,用户将向我们的服务器发出
userData
函数

然后将插座取出并放入第33行的列表中

需要时,我们可以使用以下代码获取用户的
套接字

socket = userList[33];
或者如果我们有目标:

socket = userList[user.id];

我希望这对您有所帮助。

为此,您可以使用
socket.emit('message')

socket.emit:
emit仅用于一个套接字


希望这对你有帮助。您也可以查看此链接:

为此,您可以使用
socket.emit('message')

socket.emit:
emit仅用于一个套接字


希望这对你有帮助。您也可以查看此链接:

我不太明白您在这里试图实现的目标
socket.id
是当前用户的套接字id(无waaayyy)。你能详细说明一下这个问题吗?@SterlingArcher我所有的用户都是通过socket.id标识的,但消息只针对收件人,而不是发件人。我不明白。。。你希望发生什么?请添加一些您希望发生的事情的输入和输出示例。@Mathias socket.id=单击用户消息后,发件人id会直接发送给他,就像在Facebook上一样。问题是邮件已到达收件人,但未显示在“发件人”窗口中。因此,希望将消息传递给socket.id,它是发送方的标识符。Socket.io不向套接字传输消息。id@Emerceen您可以考虑为用户腾出一个房间,并使用“IO。Sosik.in(房间)。EIT”,这将发送到包括SeDeReI在内的所有房间中,而不是完全遵循您在这里所要完成的任务。code>socket.id
是当前用户的套接字id(无waaayyy)。你能详细说明一下这个问题吗?@SterlingArcher我所有的用户都是通过socket.id标识的,但消息只针对收件人,而不是发件人。我不明白。。。你希望发生什么?请添加一些您希望发生的事情的输入和输出示例。@Mathias socket.id=单击用户消息后,发件人id会直接发送给他,就像在Facebook上一样。问题是邮件已到达收件人,但未显示在“发件人”窗口中。因此,希望将消息传递给socket.id,它是发送方的标识符。Socket.io不向套接字传输消息。id@Emerceen您可以考虑为用户腾出一个房间,并使用“IO .Sosik.in(房间).EIT”,这将发送到包括发送者在内的所有房间。