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