2017-12-02 154 views
0

我可以通过套接字ID发送给单独的socketid(私人消息)而不指定命名空间吗?Socket.io。是否有可能通过套接字ID发送到单个socketid(私人消息)而不指定命名空间?

样品:socket.to(socketId).emit('message')。它不适合我。

它只与名称空间一起使用。 namespaceIo.to(socketId).emit('message')

是否有可能通过套接字id发送给个人socketid(私人消息)而不指定命名空间?因为所有相同的套接字ID都是全局的服务器。

+0

目前尚不清楚送你所说的“私信”的意思相同的ID。这不是一个标准的socket.io术语。 – jfriend00

+0

@ jfriend00 我的意思是 - 发送给个人socketid(私人消息) –

回答

1

要在服务器上直接将消息发送到一个单一的插座,当你有只是插座的ID值,你可以这样做:

io.to(socketId).emit('message'); 

在这种情况下,io作品就像顶级的命名空间。

+0

是的,我知道。但我有多个名称空间。我想发送到个人socketid(私人消息)**没有**指定命名空间。可能吗?您的示例仅使用默认('/')名称空间。 –

+1

@YuryGolikov - 你让我困惑。目标套接字是否在特定的命名空间中?我不认为socket.io保留了所有套接字的全局列表,不管命名空间如何。它们将套接字列表保存在特定的命名空间中。这是名称空间的整个点(用于维护套接字的单独列表)。 – jfriend00

+0

是的。我有多个名称空间。其中之一 - 套接字。例如:/ ns1和/ ns2。我有套接字ID。但是一个不知道这个套接字的命名空间。我可以发送到个人套接字ID(私人信息)只知道套接字ID? –

0

如果您发送到同一名称空间中的另一个套接字,则不需要指定该名称空间,这应该是这种情况。如果没有,那么你应该考虑使用房间。这是一个基本的例子:

# server side 
var nsp = io.of('/foo'); 

nsp.on('connection', function (socket) { 

    // Broadcast new connection to everyone except the sender in namespace foo 
    socket.broadcast.emit('new-socket-connection', socket.id); 

    socket.on('response', function(data) { 
    socket.to(data.responseId).emit('message', data.msg); 
    }); 

}); 

responseId'new-socket-connection'

相关问题