簡體   English   中英

非阻塞輸入提示? node.js

[英]Non blocking input prompt? node.js

我正在使用socket.io/node.js的聊天應用程序,在終端中,我可以與另一個會話進行聊天,但是當我向我發送消息以閱讀消息時,在提示,或鍵入一條消息,不是最好的。 可以使用console.log()替代嗎?

當收到新的消息事件時,會觸發包含nick和message變量的console.log,是否有其他替代方法可以使它更實時? 我正在使用提示同步模塊。

編輯:消息事件摘要。

開消息功能:

        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可以做到這一點?

當有傳入消息時,您正在閱讀消息。 這迫使您在顯示收到的消息之前先鍵入一條消息。

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

機提示對話框被阻止。 這意味着腳本的其余部分,即使收到新事件,也要等到取消阻止后才能運行。

大多數將使用文本框來獲取用戶輸入,並在按鈕上單擊或類似事件來獲取輸入並發布消息。 這樣, socket msg事件可以被觸發而不會被阻止

的HTML

<input id="message"><button id="sendmsgbtn">Send</button>

JS

var msgInput = document.getElementById("message");
var btn = document.getElementById("sendmsgbtn");

btn.addEventListener("click,sendMessage);
msgInput.addEventListener("keyup",function(e){
    //this is used to detect if there was a enter 
    //key press inside the input
    if(e.keyCode==13){
        sendMessage();
    }
});

socket.on('msg',onMsg);    

function onMsg(data){
    var newmessage = data.nm;
    var newmsgnick = data.nn;
    console.log(newmessage);
    //add message to chat window
}

function sendMsg(){
    var msg = msgInput.value;
    msgInput.value = "";
    socket.emit("msg",{msg:msg});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM