如何正确地在socket.io和jquery中键入和停止键入?
我知道它发布了聊天应用程序的源代码,但不知何故,我无法理解所有的组件 我也读了一本很棒的书,但仍然不知道如何正确地做 这是我的尝试 客户端如何正确地在socket.io和jquery中键入和停止键入?,jquery,node.js,socket.io,Jquery,Node.js,Socket.io,我知道它发布了聊天应用程序的源代码,但不知何故,我无法理解所有的组件 我也读了一本很棒的书,但仍然不知道如何正确地做 这是我的尝试 客户端 function timeoutFunction() { typing = false; socket.emit("typing", false); } $('.typing-message').keyup(function() { console.log('happening'); typing = true;
function timeoutFunction() {
typing = false;
socket.emit("typing", false);
}
$('.typing-message').keyup(function() {
console.log('happening');
typing = true;
socket.emit('typing', 'typing...');
timeout = setTimeout(timeoutFunction, 2000);
});
socket.on('typing', function(data) {
if (data) {
$('.typing').html(data);
} else {
$('.typing').html("");
}
});
服务器端
socket.on('typing', function (data) {
console.log(data);
socket.broadcast.emit('typing', data);
});
它确实可以工作,但它并不像我想象的那样工作,当长时间的Im键入时问题就出现了状态$('.typing').html()代码>在键入之间不断更改。。不断地。这只会发生在我输入更长时间的情况下
如何正确使用此功能
谢谢。在键控
处理程序中,您需要在设置新超时之前清除以前的超时:
var timeout;
function timeoutFunction() {
typing = false;
socket.emit("typing", false);
}
$('.typing-message').keyup(function() {
console.log('happening');
typing = true;
socket.emit('typing', 'typing...');
clearTimeout(timeout);
timeout = setTimeout(timeoutFunction, 2000);
});
socket.on('typing', function(data) {
if (data) {
$('.typing').html(data);
} else {
$('.typing').html("");
}
});
更优秀的版本