Javascript 从setInterval启动对象?
我为Sockjs提供了以下重新连接方法,该方法几乎完全有效:Javascript 从setInterval启动对象?,javascript,sockjs,Javascript,Sockjs,我为Sockjs提供了以下重新连接方法,该方法几乎完全有效: (function() { // Initialize the socket & handlers var connectToServer = function() { var warbleSocket = new SockJS('http://url.com:5555/warble'); warbleSocket.onopen = function() { clearInterval(c
(function() {
// Initialize the socket & handlers
var connectToServer = function() {
var warbleSocket = new SockJS('http://url.com:5555/warble');
warbleSocket.onopen = function() {
clearInterval(connectRetry);
$('.connect-status')
.removeClass('disconnected')
.addClass('connected')
.text('Connected');
};
warbleSocket.onmessage = function(e) {
$('#warble-msg').text(e.data);
};
warbleSocket.onclose = function() {
clearInterval(connectRetry);
connectRetry = setInterval(connectToServer, 1000);
$('.connect-status')
.removeClass('connected')
.addClass('disconnected')
.text('Disconnected');
};
// Connect the text field to the socket
$('.msg-sender').off('input').on('input', function() {
warbleSocket.send($('.msg-sender input').val());
});
function send(a) {
warbleSocket.send(a);
}
return {
send: send
};
}();
var connectRetry = setInterval(connectToServer, 1000);
})();
我得到的错误是当它试图重新连接。
错误是:
SyntaxError: missing ] after element list
在这一行:
connectRetry = setInterval(connectToServer, 1000);
你知道我做错了什么吗?你的
connectToServer
变量不是一个函数,它是一个带有属性send
的对象,这是一个函数,所以说setInterval(connectToServer,1000)
没有意义。请尝试以下方法:
setInterval(connectToServer.send, 1000);
你为什么不把事情简化一点呢 我会将连接内容放在特定函数中,并从setInterval()调用它 类似这样的内容(请小心使用,因为我没有测试此代码,好吗?): 我希望它能帮助你 问候,
Heleno此错误是由此代码之外的内容引起的。这里既没有元素列表,也没有开头的
[
。为什么在var connectRetry=setInterval(connectToServer,1000);
之前有();
。不确定这是否是问题的原因。应该是};
@Rajesh没有}();
我将无法使用connectToServer.send(“你好”)
在连接服务器之外
实际上,如果我删除()
并执行};
它会工作,但随后连接服务器。发送(“Hello”)
停止工作。连接重试=设置间隔(连接服务器,1000)
在onclose
中,是要重新运行connectToServer,因此它试图重新连接我的脚本。这会破坏我脚本的逻辑OK,但是你明白我的基本观点吗?connectToServer
不是一个函数,所以你不能将它传递给setInterval()
。您需要重新构造脚本。是的,我理解,但不确定如何:/
(function() {
// Initialize the socket & handlers
var connectToServer = function() {
var warbleSocket;
function connect() {
warbleSocket = new SockJS('http://url.com:5555/warble');
warbleSocket.onopen = function() {
// ...
};
warbleSocket.onmessage = function(e) {
// ...
};
warbleSocket.onclose = function() {
// ...
}
// Connect the text field to the socket
$('.msg-sender').off('input').on('input', function() {
warbleSocket.send($('.msg-sender input').val());
});
function send(a) {
warbleSocket.send(a);
}
return {
send: send
};
}();
// you probably will need to call the first connection
connectToServer();
// and than set connection retry
var connectRetry = setInterval(connectToServer.connect, 1000);
})();