Meteor WebSocket 已处于 CLOSING 或 CLOSED 状态错误
Posted
技术标签:
【中文标题】Meteor WebSocket 已处于 CLOSING 或 CLOSED 状态错误【英文标题】:Meteor WebSocket is already in CLOSING or CLOSED state error 【发布时间】:2016-10-26 10:36:04 【问题描述】:在实现Detecting idle time in javascript elegantly 后,我在浏览器控制台中收到“WebSocket 已处于 CLOSING 或 CLOSED 状态”错误。如何解决这个问题?这是我的代码:
var inactivityTime = function ()
var t;
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
function detector()
alert("You are idle!");
function resetTimer()
console.log("RESET!");
clearTimeout(t);
t = setTimeout(detector, 10000)
// 1000 milisec = 1 sec
;
Template.myTemplate.onRendered(function()
inactivityTime();
);
【问题讨论】:
【参考方案1】:当 t 可能尚未初始化时,您正在调用 clearTimeout(t) - 您应该先检查一个值
【讨论】:
我用 if() 检查过,但没有帮助:if(t) clearTimeout(t);
好的,我解决了这个问题。刚刚将 set/clearTimeout 更改为 Meteor.set/clearTimeout。不过,我会接受你的回答,因为它也很有帮助。
嗯,有人欢呼太快了:(错误仍然存在。
一分钟成功,然后又失败了?你的代码现在是什么样子的
我的代码是一样的。如果出现警报消息(第一次超时)并单击“确定”(警报消息),我不会收到错误消息。但是,如果出现警报消息并且我等待第二次超时而不单击“确定”,则会收到此错误。如果我可以禁用第二个超时,只要我没有单击确定,它可能会解决这个问题。但是,我不知道该怎么做。以上是关于Meteor WebSocket 已处于 CLOSING 或 CLOSED 状态错误的主要内容,如果未能解决你的问题,请参考以下文章
Meteor:WebSocket 握手期间出错:意外响应代码:400
如何确保 WebSocket 的 readyState 变为 CLOSED(3)?
The WebSocket session [0] has been closed and no method (apart from close()) may be called on a clos