4

サーバーがクライアントから発行されたイベントに応答しないのはなぜですか? 私は socket.io Web ページからいくつかの簡単な例を試してみましたが、うまく機能しているようです。

私の目標は、ユーザーが入力ボックスからフォーカスを外すたびにイベントを発行し、サーバーで入力値を比較して、クライアントにイベントを発行することです。

クライアント側

$('#userEmail').focusout(function() {
  var value = $('#userEmail').val(); // gets email from the input field
  console.log(value); // prints to console (it works!)
  socket.emit('emailFocusOut', { userEmail: value }); // server doesn't respond to this
});

サーバ側

io.sockets.on 'emailFocusOut', (data) ->
  console.log(data)

追加情報

  • エクスプレス 3.0rc4
  • ソケット.io 0.9.10
  • コーヒースクリプト1.3.3
4

2 に答える 2

6

カスタム イベントをio.sockets.on関数内に配置する必要があります。次のコードが機能します。

io.sockets.on('connection', function (socket) {  
  socket.on("emailFocusOut", function(data) {
    console.log(data) // results in: { userEmail: 'awesome' }
  })
});
于 2012-09-30T10:44:07.003 に答える
5

サーバーからの応答が必要な場合、サーバーはクライアントにメッセージを送信する必要があります。
console.logネットワーク応答は行いません。

var io = require('socket.io').listen(80);

io.sockets.on('connection', function(socket) {
    socket.on('emailFocusOut', function(data) {
        data.receivedAt = Date.now();
        socket.emit('emailFocusOutResponse', data); // answer back
    });
});

次に、クライアントでこのメッセージをリッスンし'emailFocusOutResponse'て処理できます。

于 2012-09-30T10:30:59.437 に答える