AngularJS:在服务中重新连接WebSocket
AngularJS: Reconnect WebSocket inside a service
我在AngularJS应用程序中使用web套接字。
当用户注销时,客户端关闭web套接字连接。当用户重新登录时,我需要重新连接web套接字。
web套接字包含在一个服务中(代码简化了一点):
angular.module('myApp').factory("SubscriptionFactory", function () {
var Service = {};
var ws = new WebSocket("ws://127.0.0.1:8000");
/* WS methods (onopen, onmessage ect) left out for simplicity */
Service.reestablishConnection = function() {
// Reestablishing connection
ws = new WebSocket("ws://127.0.0.1:8000");
}
return Service;
问题是web套接字的新实例不工作。
根据这个问题,web套接字需要在重新创建对象时将其处理程序重新连接到对象。
但是AngularJS的服务是单例的(根据这个问题应该保持单例)。
如何在我的AngularJS单例服务中重新创建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 Socket对象,并手动将Web Sockets处理程序附加到我的AngularJS服务中。
相关文章:
- 当客户端在JW Player中恢复丢失的连接时,会自动重新连接
- PeerJS自动重新连接
- Node.js REST与MySQL句柄重新连接
- Socket.IO socket.id 更改同一客户端而不重新连接
- 设置流星重新连接时间
- 如何通过重新连接实现共享重播
- 重新连接具有共享RxJS observable的WebSocket
- 重新连接 JavaScript 函数
- 如何在自动重新连接超时后重新连接socket.io客户端
- Socket.IO:重新连接导致服务器连接代码运行两次
- node.js/socket.io:重新连接时刷新表
- 套接字发出 重新连接套接字后不触发
- Socket.io :断开连接后重新连接时如何执行某些操作
- 断开并手动重新连接 Socket.IO
- 用Javascript实现WebSocket重新连接
- 如何重新连接浏览器websocket客户端
- AngularJS:在服务中重新连接WebSocket
- 是否有可能将websocket重新连接到不同的主机?
- websocket在关闭时重新连接,代码为1006
- websocket使用会话id重新连接