查看其他人何时输入

时间:2019-06-20 17:23:49

标签: node.js socket.io

我使用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);
    });
});

1 个答案:

答案 0 :(得分:0)

服务器端代码似乎没有响应客户端发送给它的“类型”事件的功能。

在您的

之内
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})
})