program story

Socket.IO 1.0의 특정 ID로 메시지 보내기

inputbox 2020. 10. 6. 08:10
반응형

Socket.IO 1.0의 특정 ID로 메시지 보내기


하나의 특정 소켓 ID로 데이터를 보내고 싶습니다.

이전 버전에서이 작업을 수행 할 수있었습니다.

io.sockets.socket(socketid).emit('message', 'for your eyes only');

Socket.IO 1.0에서 비슷한 작업을 수행하려면 어떻게해야합니까?


socket.io 1.0에서는 더 나은 방법을 제공합니다. 각 소켓은 자체 ID로 기본 방에 자동으로 참여합니다. 문서 확인 : http://socket.io/docs/rooms-and-namespaces/#default-room

따라서 다음 코드를 사용하여 id로 소켓에 내보낼 수 있습니다.

io.to(socketid).emit('message', 'for your eyes only');

socket.io 1.0에서는 다음 코드로이를 수행 할 수 있습니다.

if (io.sockets.connected[socketid]) {
    io.sockets.connected[socketid].emit('message', 'for your eyes only');
}

최신 정보:

@ MustafaDokumacı의 답변에는 더 나은 솔루션이 포함되어 있습니다.


@Mustafa Dokumacı와 @Curious는 이미 충분한 정보를 제공했으며 소켓 ID를 얻는 방법을 추가하고 있습니다.

소켓 ID를 얻으려면 socket.id를 사용 하십시오 .

var chat = io.of("/socket").on('connection',onSocketConnected);

function onSocketConnected(socket){
   console.log("connected :"+socket.id);  
}

네임 스페이스를 사용한 경우 다음이 작동하는 것으로 나타났습니다.

//Defining the namespace <br>
var nsp = io.of('/my-namespace');

//targeting the message to socket id <br>
nsp.to(socket id of the intended recipient).emit('private message', 'hello');

네임 스페이스에 대한 추가 정보 : http://socket.io/docs/rooms-and-namespaces/


@Curious와 @ MustafaDokumacı 모두 잘 작동하는 솔루션을 제공했다고 생각합니다. 그러나 차이점은 @ MustafaDokumacı의 솔루션을 사용하면 메시지가 특정 클라이언트뿐만 아니라 방으로 방송된다는 것입니다.

승인이 요청 될 때 차이가 두드러집니다.

io.sockets.connected[socketid].emit('message', 'for your eyes only', function(data) {...});

예상대로 작동하지만

io.to(socketid).emit('message', 'for your eyes only', function(data) {...});

실패하다

Error: Callbacks are not supported when broadcasting

Node.js-> socket.io-> 다운로드하는 채팅 예제가 있습니다. Paste in line (io on connection) 부분 .. 나는 100 % 작동하는이 코드를 사용합니다.

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log(socket.id);
    io.to(socket.id).emit('chat message', msg+' you ID is:'+socket.id);
  });
});

참고 URL : https://stackoverflow.com/questions/24041220/sending-message-to-a-specific-id-in-socket-io-1-0

반응형