[英]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.