Sah*_*bov 4 javascript websocket node.js express 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
});
Run Code Online (Sandbox Code Playgroud)
服务器端
io.sockets.on 'emailFocusOut', (data) ->
console.log(data)
Run Code Online (Sandbox Code Playgroud)
附加信息
如果您需要服务器的一些答案,您的服务器应该将消息发送回客户端.
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
});
});
Run Code Online (Sandbox Code Playgroud)
然后在客户端上,您可以侦听'emailFocusOutResponse'并处理此消息.
您必须将自定义事件放在io.sockets.on函数中.以下代码将起作用:
io.sockets.on('connection', function (socket) {
socket.on("emailFocusOut", function(data) {
console.log(data) // results in: { userEmail: 'awesome' }
})
});
Run Code Online (Sandbox Code Playgroud)