4

为什么我的服务器不响应客户端发出的事件?我从 socket.io 网页上尝试了一些简单的例子,它们似乎工作正常。

我的目标是每当用户从输入框中聚焦时发出一个事件,比较服务器上的输入值,然后将一个事件返回给客户端。

客户端

$('#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 回答