2

socket.io を使用したクライアントからサーバーへの通信に問題があるようです。

まず、送信している JSON オブジェクト

loginInfo = { email: 'username', password: 'password' }

クライアント側には次のものがあります。

socket.emit('user:login', loginInfo);

次に、サーバー側で私が持っている

socket.on('user:login', function(loginInfo) {
    console.log('data being sent is:\n' + loginInfo);
});

これはコンソールに出力されます:

data being sent is:
function ack() {
    self.log.debug('sending data ack packet');
    socket.packet({
        type: 'ack'
      , args: util.toArray(arguments)
      , ackId: packet.id
    });
}

同様に私がする場合

socket.on('user:login', function(loginInfo) {
    console.log('data being sent is:\n' + loginInfo.password);
});

コンソールに次のように出力されます。

data being sent is:
undefined

過去に socket.io を使用したことがありますが、これまでこの問題に遭遇したことはありません。誰かがこの問題の原因を知っていれば、この問題を解決する方法についての洞察に非常に感謝しています.

編集: 問題は出力内容とは関係ありません。私の問題を説明するためにそれを使用しただけです。つまり、loginInfo JSON がクライアントによって適切に送信されていないか、サーバーによって適切に受信されていません。私の目標は、サーバーが loginInfo を受信して​​、データを処理できるようにすることです。

ありがとう!

4

3 に答える 3

1

配列をオブジェクトのプロパティにしてみてください...何らかの理由で私にとってはうまくいきました。

messageIds = [1,2,3,4,5,6];

これはうまくいきませんでした:

socket.emit('updateMessage',JSON.stringify(messageIds));

これはうまくいきました:

  socket.emit('updateMessage',{1:messageIds});

奇妙なバグ、理由はわかりません。

于 2014-06-15T00:38:39.690 に答える
0

loginInfoクライアント側で呼び出される関数がある可能性はありますか? このsocket.emit('user:login', loginInfo);行はパラメーターではなく関数を送信していると思います。確認応答を取得するために、パラメータとして関数socket.emitが使用されます。

于 2013-04-22T05:49:37.300 に答える
0

オブジェクトを文字列化して文字列に追加する必要があります。そうしないと、動作が予測できなくなります。

console.log('data being sent is:\n' + JSON.stringify(loginInfo));
于 2013-04-22T03:46:44.347 に答える