我试图使用socket.io来实现与两个用户使用相同输入字段的功能 Idea看起来像这样:
但是当我试图输入一个字符时 - 整个输入值以某种方式被设置为“”(字面上没什么) 也许我应该以另一种方式处理数据流?
将数据发送到后端并在响应时获取它的客户端代码:
$('input').keydown(function(){
socket.emit('chat message', $('input').val());
console.log($('input').val());
return false;
});
socket.on('chat message', function(msg){
$('input').val(msg);
});
后端代码,仅用于在所有连接的客户端上广播数据:
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
GitHub回购链接:https://github.com/eko24/websocket-input
答案 0 :(得分:1)
当<input>
事件被触发时,keydown
标记的值尚未更改,因此您无法看到刚刚按下的键的效果。
相反,您可以使用&#34;输入&#34;表示用户更改<input>
值的事件:
$("input").on("input", function(e) {
log($("input").val());
});
function log(x) {
var div = document.createElement("div");
div.innerHTML = x;
document.body.appendChild(div);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input>
&#13;