两个用户通过 websocket 编辑输入时出现问题
Issue with editing input via websockets by two users
我试图实现使用 socket.io
与两个用户使用相同的输入字段的功能想法看起来像这样:
- 用户输入数据
- 数据进入后端
- 跨所有连接的客户端的后端广播数据
但是当我尝试输入单个字符时 - 整个输入值不知何故被设置为 "(字面意思是没有)也许我应该以另一种方式处理数据流?
客户端代码,用于将数据发送到后端并在响应时获取数据:
$('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
触发
keydown
事件时,<input>
标记的值尚未更改,因此您看不到刚刚按下的键的效果。
相反,您可以使用"input"事件,该事件表示用户何时更改了<input>
值:
$("input").on("input", function(e) {
log($("input").val());
});
function log(x) {
var div = document.createElement("div");
div.innerHTML = x;
document.body.appendChild(div);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input>
相关文章:
- 编辑数据库输入时在文本框上换行
- 从可编辑的引导程序中获取输入值
- 如何使用编辑按钮启用表格行中的所有输入
- AngularJS内容可编辑模糊输入
- 无法根据用户在编辑窗口中的输入显示/隐藏jtable jquery字段
- 如何在使用 UIWebView 编辑 HTML 内容时正确调整输入语言更改 (LTR/RTL) 的文本对齐方式
- 角度变量在编辑输入字段之前不显示
- Javascript通过加法编辑输入值
- 在angularJS中使用split()时无法编辑输入
- 用于编辑输入字段的弹出窗口
- 一起编辑输入字段,而不是单独编辑
- 制作一个“;输入“;按钮文本不可编辑
- 使输入不可编辑而不禁用
- HTML5输入颜色,可编辑输入
- Kendo ui Grid:标准的HTML5输入日期时间可以用作单元格编辑器吗
- JAVASCRIPT - 在动态创建的编辑框中拦截键码 13(输入)并将元素传递给不同的函数
- 使用 strip_tags() 和 preg_replace() 显示所见即所得/TinyMCE 文本编辑器中输入的文本
- TinyMCE 编辑输入值和按钮文本
- 如何在两个Liferay输入编辑器之间传输html
- Javascript文本输入编辑:如何将一个文本输入中的多个字符串文本着色器转换为另一种表示