我正在使用socket.io/node.js在聊天应用程序上工作,在终端中,我可以与另一个会话聊天,但是当我发送消息以便阅读消息时我要么点击了输入提示,或输入消息,而不是最好的。 console.log()的任何替代方案?
收到新消息事件时,会触发包含缺刻和消息变量的console.log,以使其更实时吗? 我正在使用Prompt-Sync模块。
编辑:在邮件事件摘要中。
关于留言功能:
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据说可以执行,任何这方面的方法?
答案 0 :(得分:0)
当有传入消息时,您正在阅读消息。这会强制您在显示传入消息之前键入消息。
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'});
答案 1 :(得分:0)
native prompt dialog正在阻止。这意味着即使接收到新事件,脚本的其余部分也会在解除阻塞之前运行。
大多数人会使用文本框来获取用户输入,并使用按钮点击或类似事件来获取输入并发布消息。这样,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});
}