gpt4 book ai didi

javascript - 如何通过 angularjs 服务正确重新连接到套接字?

转载 作者:行者123 更新时间:2023-11-28 06:06:49 24 4
gpt4 key购买 nike

我编写 angularjs 应用程序并遇到一些问题。我的应用程序每次都使用套接字连接来获取一些数据。为此,我编写了工厂(代码如下)。

var Service = {};
var ws = new WebSocket("url");
var timer;

Service.onMessage = function(message) { /* some code */};
Service.onClose = function() {
timer = $interval(function () {
ws = new WebSocket("url");
Service.connect();
}, 1000);
};
Service.onOpen = function() {
console.log("open");
if (timer) $interval.cancel(timer);
};
Service.onError = function(error) { /* some code */};

Service.connect = function() {
// (Re)connect

// Reattaching handlers to object
ws.onmessage = Service.onMessage;
ws.onclose = Service.onClose;
ws.onopen = Service.onOpen;
ws.onerror = Service.onError;
}
return Service;

我有什么问题吗?为简单起见,请假设我的服务器已关闭。并且套接字连接也已关闭。之后 onclose 事件将开始。但我不明白如何重新连接套接字。例如,我应该每 1 或 5 秒检查一次连接。在我的代码中,如果套接字关闭,我将创建新的套接字对象并尝试重新连接。而我有什么?当服务器启动时,我有很多连接到套接字的对象。请帮我。我如何解决这个问题,例如,拥有一个对象(一个当前连接)?

最佳答案

But i dont understand how to re-connect with socket. I should check connection every 1 or 5 seconds

我认为这不是一个纯粹的 Angular 相关问题,这里是一个通用的 JavaScript 答案(未经测试):

  function reconnect(url){
ws = new WebSocket(url);
}

ws.onclose = function(){
myTimeout = setTimeout(function(){reconnect('mywsURL')}, 5000);
};

在 Angular 使用中:

var interval = $interval(your_callback, 5000);

并取消超时:

$interval.cancel(interval);

我建议你阅读这个lib的代码,真的很有趣。

关于javascript - 如何通过 angularjs 服务正确重新连接到套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com