ソケットサーバーとクライアント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
$
が、ここでは答えの重要な部分が含まれており、参考のためにリンクを提供することをお勧めしていないとき、彼らは、IDの前に追記/#を停止したことを言います。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 13952124) –
完了しました。 ありがとうございました! –