【问题标题】:See when someone else is typing查看其他人何时键入
【发布时间】:2019-06-21 01:30:58
【问题描述】:

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

【问题讨论】:

  • 你知道,第一个是客户端代码,第二个是服务器端

标签: node.js socket.io


【解决方案1】:

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

在你的

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

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 2011-06-28
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多