2016-06-01 5 views
1

ソケットサーバーとクライアントsocket.idに問題があります。 [email protected][email protected]クライアント(socket.io-client)とサーバー(socket)の異なるsocket.idが届きましたか? e.iの違いは、サーバー側のsocket.idには/#IAPEFvUDQkfV0NxcAAAAがあり、クライアント側のsocket.idにはIAPEFvUDQkfV0NxcAAAAがあり、[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の最初の項目は、このリンクは質問に答えるかもしれないが名前空間

+0

が、ここでは答えの重要な部分が含まれており、参考のためにリンクを提供することをお勧めしていないとき、彼らは、IDの前に追記/#を停止したことを言います。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 13952124) –

+0

完了しました。 ありがとうございました! –

関連する問題