9

接続時にソケット オブジェクトにカスタム情報を追加して、ソケットを切断したときにそのカスタム情報を読み取れるようにしようとしています。

いいえ:

// (Client)
socket.on('connect', function(data){
  socket.customInfo = 'customdata';
});

// (server)
socket.on('disconnect', function () {
  console.log(socket.customInfo);
});
4

2 に答える 2

8

JavaScript であるため、任意のオブジェクトに属性を自由に追加できます (実際に行ったように)。ただし、socket.io はそれを行うための組み込みの方法を提供します (そのため、名前の競合について心配する必要はありません)。

socket.set('nickname', name, function () {
  socket.emit('ready');
});

socket.get('nickname', function (err, name) {
  console.log('Chat message by ', name);
});

これは片側 (クライアントまたはサーバー) のみであることに注意してください。明らかに、通信なしでクライアントとサーバー間でデータを共有することはできません(それがあなたの例が示唆していることです)。

ブラウザのソケットとサーバーのソケットは、設定した場合、同じプロパティを共有しません。基本的に、クライアント側でのみデータを設定しました(サーバーではなくブラウザのメモリにあります)。

于 2013-06-27T19:47:27.960 に答える