我使用websockets以及javascript和html5
我有以下代码。
<input type="text" onFocus=" so = new websocket('ws://localhost:1234');" onBlur="so.close();" onKeyUp="keyup();" >
<script type='text/javascript'>
var so; //this is global...
//wait a little (user stops typing)
function keyup(){
if (timeout) {clearTimeout(timeout);}
timeout = setTimeout(lookup, 250);
}
function lookup(){
//it's global, so use it right away
so.onopen = function(){
//send data to server to get responce...
因此,如果用户点击/不是文本字段,则会打开/关闭websockets。用户在文本字段上键入内容。 textfield的值被发送到服务器,执行查询,如果有匹配的结果,它们会在用户的屏幕上呈现。
如果我单击文本字段,我在控制台中看到“已连接”,如果我点击任何其他内容,我会看到“正常关闭”,就像我应该的那样。没关系。
但是当我在文本字段中键入letteres时,要将数据发送到服务器,则不会发送任何内容。我在控制台中什么都看不到。我没有看到任何错误。
我错过了什么?这就像so.onopen
永远不会被执行。
有什么建议吗?
提前致谢
答案 0 :(得分:0)
问题是您重新创建套接字但不绑定onopen事件处理程序。
在焦点上,你应该调用一个函数同时执行:创建websocket并绑定onopen事件处理程序:
<input id=someid type="text" onBlur="so.close();" >
<script type='text/javascript'>
var so, field = document.getElementById('someid');
field.onfocus = function(){
so = new websocket('ws://localhost:1234');
so.onopen = function(){
// do things
}
}