2016-06-01 3 views
1

소켓 서버와 클라이언트 socket.id에 문제가 있습니다. [email protected][email protected]으로 클라이언트 (socket.io-client)와 socket.id이 달라지고 서버 (socket)가 최신 버전인지 잘 모르겠습니까? e.i 차이점은 서버 측 socket.id/#IAPEFvUDQkfV0NxcAAAA이고 클라이언트 측 socket.idIAPEFvUDQkfV0NxcAAAA입니다. [email protected]을 사용하는 경우 클라이언트와 서버에서 동일한 socket.id를 얻습니다.socket.io 클라이언트와 서버 socket.id가 다릅니다

이 버전입니다 ...

admin$ npm list | grep socket 
├─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ └─┬ [email protected] 
│ ├─┬ [email protected] 
│ └─┬ [email protected] 
├─┬ [email protected] 
│ ├─┬ [email protected] 
├─┬ [email protected] 
admin$ npm --version 
3.6.0 
admin$ node --version 
v5.6.0 
admin$ 

이이 클라이언트 test_socket_client 코드

# test_socket_client.js 
var io_client = require('socket.io/node_modules/socket.io-client') 
var serverurl = "http://0.0.0.0:5000/"; 
var options = { 
     transports: ['websocket'], 
     'force new connection': true 
}; 
var socket = io_client.connect(serverurl, options); 
socket.on("connect", function() { 
    console.log('clientsocketid', socket.id); 
    socket.emit('get_socketid_from_client', socket.id, function(data) { 
     console.log('get_socketid_from_client', data) 
    }); 
}); 
socket.on("test_emit_on_clientsocketid", function() { 
    console.log('test_emit_on_clientsocketid successful') 
}); 
socket.on("test_emit_on_clientsocketid_modified", function() { 
    console.log('test_emit_on_clientsocketid_modified successful') 
}); 
socket.on("test_emit_on_serversocketid", function() { 
    console.log('test_emit_on_serversocketid successful') 
}); 

이러한 결과입니다입니다 서버 test_socket_server 코드

# test_socket_server.js 
var io = require('socket.io').listen(5000); 
var serverurl = "http://0.0.0.0:5000/"; 

io.sockets.on('connection', function (socket) { 
    var socketid = socket.id 
    console.log('serversocketid', socketid) 
    socket.on('get_socketid_from_client', function(clientsocketid) { 
     console.log('get_socketid_from_client-clientsocketid', clientsocketid) 
     io.to(clientsocketid).emit('test_emit_on_clientsocketid') 
     io.to('/#'+clientsocketid).emit('test_emit_on_clientsocketid_modified') 
     socket.emit('test_emit_on_serversocketid') 
    }) 
}); 

입니다 .. .

# Server side 
$ node test_socket_server.js 
serversocketid /#IAPEFvUDQkfV0NxcAAAA 
get_socketid_from_client-clientsocketid IAPEFvUDQkfV0NxcAAAA 

$ 

# Client side 
$ node test_socket_client.js 
clientsocketid IAPEFvUDQkfV0NxcAAAA 
test_emit_on_clientsocketid_modified successful 
test_emit_on_serversocketid successful 

$ 

답변

1

저는 늦었지만 이것이 며칠 전에 발표 된 마지막 버전에서 수정 된 것 같습니다.

release notes of version 1.5.0의 첫 번째 항목은 아이디 전에 APPEND/#을 중지 있다고 할 때 네임 스페이스

+0

없는이 링크는 질문에 대답 할 수 있지만, 여기에 해답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공하는 것이 더 좋습니다 . 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [검토 중] (리뷰/저품절 게시물/13952124) –

+0

완료. 감사합니다. –