Javascript AngularJS:在服务内重新连接WebSocket
我在AngularJS应用程序中使用web套接字。Javascript AngularJS:在服务内重新连接WebSocket,javascript,angularjs,sockets,service,websocket,Javascript,Angularjs,Sockets,Service,Websocket,我在AngularJS应用程序中使用web套接字。 当用户注销时,客户端关闭web套接字连接。 当用户重新登录时,我需要重新连接web套接字 web套接字包含在服务中(代码稍微简化): 问题是web套接字的新实例不起作用。 根据web,重新创建对象时,套接字需要将其处理程序重新附加到对象 但是AngularJS服务是一个单例服务(根据需要应该保持单例)。 如何在AngularJS singleton服务中重新创建web套接字实例 我自己找到了解决办法。其实很简单: angular.module(
当用户注销时,客户端关闭web套接字连接。 当用户重新登录时,我需要重新连接web套接字
web套接字包含在服务中(代码稍微简化): 问题是web套接字的新实例不起作用。
根据web,重新创建对象时,套接字需要将其处理程序重新附加到对象
但是AngularJS服务是一个单例服务(根据需要应该保持单例)。
如何在AngularJS singleton服务中重新创建web套接字实例 我自己找到了解决办法。其实很简单:
angular.module('myApp').factory("SubscriptionFactory", function () {
var Service = {};
var ws;
Service.onMessage = function(message) { /* some code */};
Service.onClose = function() { /* some code */ };
Service.onOpen = function() { /* some code */};
Service.onError = function(error) { /* some code */};
Service.connect = function() {
// (Re)connect
ws = new WebSocket("ws://127.0.0.1:8000");
// Reattaching handlers to object
ws.onmessage = Service.onMessage;
ws.onclose = Service.onClose;
ws.onopen = Service.onOpen;
ws.onerror = Service.onError;
}
return Service;
这里发生的事情很简单:我创建了一个新的Web套接字对象,并手动将Web套接字处理程序附加到我的AngularJS服务
angular.module('myApp').factory("SubscriptionFactory", function () {
var Service = {};
var ws;
Service.onMessage = function(message) { /* some code */};
Service.onClose = function() { /* some code */ };
Service.onOpen = function() { /* some code */};
Service.onError = function(error) { /* some code */};
Service.connect = function() {
// (Re)connect
ws = new WebSocket("ws://127.0.0.1:8000");
// Reattaching handlers to object
ws.onmessage = Service.onMessage;
ws.onclose = Service.onClose;
ws.onopen = Service.onOpen;
ws.onerror = Service.onError;
}
return Service;