如何正确地通过angularjs服务连接到套接字
How correct recconect to socket via angularjs service?
我写了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;
我有什么问题?为简单起见,假设我的服务器已关闭。插座连接也断开了。之后,关闭事件将开始。但是我不明白如何重新连接插座。例如,我应该每 1 或 5 秒检查一次连接。在我的代码中,如果套接字关闭,我会创建新的套接字对象并尝试重新连接。我有什么?当服务器启动时,我有很多对象连接到套接字。请帮助我。例如,我如何解决这个问题,有一个对象(一个当前连接)?
但是我不明白如何重新连接插座。我应该检查 每 1 或 5 秒连接一次
我认为这不是一个纯粹的角度相关问题,这里有一个通用的JavaScript答案(未经测试):
function reconnect(url){
ws = new WebSocket(url);
}
ws.onclose = function(){
myTimeout = setTimeout(function(){reconnect('mywsURL')}, 5000);
};
在角度使用中:
var interval = $interval(your_callback, 5000);
并取消超时:
$interval.cancel(interval);
我建议你阅读这个库的代码,真的很有趣。
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 无法连接angularjs中的服务功能
- 如何正确地通过angularjs服务连接到套接字
- Angular中的连接方向服务
- 将服务连接到现有的流星帐户
- 突然无法连接到科尔多瓦应用程序中的网络服务
- 角度连接 2 控制器通过 1 具有 ES6 语法的服务
- Angular:如何连接控制器中的范围和服务中的范围
- AngularJS中的$resource web服务连接配置的确切含义
- 在AngularJS中使用服务来连接API端点
- AngularJS:在服务中重新连接WebSocket
- 如何通过服务与Angular.js和Node.js建立连接
- 在AngularJS中为$http设置一个服务或工厂来连接REST API的最佳实践
- Django rest框架与angular js服务的连接
- 将Breeze(使用Angular)连接到现有的WCF数据服务
- 如何使用socks4a从node.js连接到隐藏服务
- 如何在视图中连接grails服务和javascript代码
- 通过两个服务连接一个承诺