【问题标题】:Non blocking input prompt? node.js非阻塞输入提示?节点.js
【发布时间】:2016-09-18 19:54:23
【问题描述】:

我正在使用 socket.io/node.js 开发一个聊天应用程序,在终端中,我可以与另一个会话聊天,但是当我发送消息以阅读消息时,我遇到了任何一个问题在提示符上输入,或键入消息,不是最好的。 console.log() 的任何替代方案?

console.log 包含 nick 和 message 变量,在收到新消息事件时触发,是否有任何替代方法可以使其更实时? 我正在使用提示同步模块。

编辑:关于消息事件 sn-p。

关于消息功能:

        socket.on('msg',function(data){ 

         var newmessage = data.m;
         var newmsgnick = data.nick;
         newmessagefunc(newmessage,newmsgnick)

        });

newmessagefunc 函数:

        function newmessagefunc(message,nick){
         console.log(nick+": "+message);
         message = i("message: ")
            }

消息日志:

 message: Hello - how goes?
 Ozzie: Hello - how goes?
 message: Hello - ?
 Ozzie: it goes well. 
 message: 

要阅读其他用户发送的消息,我必须提交消息,或者只是在消息提示中输入,它们不会在发送时显示,因为据说 socket.io 能够做到,任何解决方法?

【问题讨论】:

  • 您将需要展示您的代码的最小示例,但如果您有 onmessage 回调,您应该在那里更新您的聊天屏幕。
  • 我会添加onmessege事件sn-p。
  • i 函数在做什么?
  • 它是 readline 提示,它是一个输入提示。
  • 如果你的意思是native prompt dialog,那是一个阻塞对话框,脚本的其余部分在打开时暂停。我可以提供一个使用文本框和按钮来发送消息的示例,这样您就不需要使用提示符

标签: javascript node.js socket.io


【解决方案1】:

当有消息传入时,您正在阅读消息。这迫使您在显示传入消息之前键入消息。

socket.on('msg',function(data){ 
  var newmessage = data.nm;
  var newmsgnick = data.nn;
  console.log(newmessage);
});

现在,这将打印传入的消息。将提示代码保留在此块之外。

while(typeof message === "undefined"){
  message = i("message: ") 
}
socket.emit('msg', {'nm':message, 'nn':'nick'});

【讨论】:

    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    相关资源
    最近更新 更多