javascript - Socket.io 不触发从客户端到服务器的事件

标签 javascript node.js express websocket socket.io

为什么我的服务器不响应客户端发出的事件?我尝试了 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
  • socket.io 0.9.10
  • CoffeeScript 1.3.3

最佳答案

您必须将自定义事件放在 io.sockets.on 函数中。以下代码将起作用:

io.sockets.on('connection', function (socket) {  
  socket.on("emailFocusOut", function(data) {
    console.log(data) // results in: { userEmail: 'awesome' }
  })
});

关于javascript - Socket.io 不触发从客户端到服务器的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12659330/

相关文章:

javascript - 固定水平滚动条

javascript - 如何在ajax调用中返回成功

javascript - DynamoDB 验证异常 - 关键元素与模式不匹配

node.js - 多字段传递获取查询失败

node.js - ExpressJS 是否使用了无效的 set-cookie header ?

javascript - 如何让这段 CoffeeScript TurboLinks 5 变得友好?

javascript - 创建新对象并使用 fs.writeFile() 写入文件

node.js - nodejs 异步库和 redis

node.js - Node Express + Sequelize findAll 在空数据库上返回 SequelizeDatabaseError

javascript - expressJS : separating route, 模型,使从模型导出的属性到路由异步工作?