node.js - 查看其他人何时键入
问题描述
我使用 socket.io 制作了一个聊天应用程序
我想制作一个功能,可以在其他用户输入消息时告诉某人。最初我的代码正在运行,但由于某种原因它停止了。聊天功能很好用。
客户端
//Query DOM
var message = document.getElementById('message');
handle = document.getElementById('handle'),
btn = document.getElementById('send'),
output = document.getElementById('output'),
feedback = document.getElementById('feedback');
//emit Events
btn.addEventListener('click', function(){
socket.emit('chat', {
message: message.value,
handle: handle.value
});
});
message.addEventListener('keypress', function(){
socket.emit('typing', handle.value);
});
//Listen for events
socket.on('chat', function(data){
feedback.innerHTML = "";
output.innerHTML += '<p><strong>' + data.handle + ' </strong>' + data.message + ' </p>';
});
// socket.on('typing', function(data){
// feedback.innerHTML = '<p><em>' + data + ' is typing a message....</em></p>';
// });
socket.on('typing', function(data){
if (data) {
feedback.innerHTML = '<p><em>' + data + ' is typing...</em></p>';
} else {
feedback.innerHTML = ''
}
});
服务器端
var io = socket(server);
io.on('connection', function(socket){
console.log('Made socket connection', socket.id);
socket.on('chat', function(data) {
io.sockets.emit('chat', data);
});
});
解决方案
服务器端代码似乎没有响应客户端发送给它的“打字”事件的功能。
在你的
io.on('connection', function(socket){
console.log('Made socket connection', socket.id);
socket.on('chat', function(data) {
io.sockets.emit('chat', data);
});
});
阻止您需要包含服务器在从客户端接收到“打字”事件时可以发送给客户端的响应。
就像是
socket.on('typing', function(data){
io.sockets.emit('userState', {user: bleh, typing:
true})
})
推荐阅读
- html - 将文本放入的区别
- go - 在 golang 中检查二进制完整性
- elasticsearch - Elasticsearch 6.2 / Kibana 查询:一个字段必须存在,一个字段不能存在
- docker - 为什么多步 docker build 更好?
- node.js - 使用 nodejs 托管多个 html 网站而不是 apache
- javascript - 依次按键过滤json对象
- cakephp-1.3 - CakePHP 1.3 VPS 上的空白白页,但不在共享 Cpanel 上
- html - 记住电子邮件和密码
- typescript - 使用打字稿解析查询
- javascript - 你好世界和指南没有出现在 Android Studio 的蓝图中