一方面,我有几个工厂,每个工厂控制一个websocket。
另一方面,这些工厂中的一个应该在客户端被记录时启动,所以:
if(user.isLogged()){
$injector.get('NotificationsWebsocket')
}
这就是我动态初始化工厂的方式,当用户注销时问题就出现了
我不知道如何删除angular实例工厂的实例或如何销毁NotificationsWebsocket。我试图关闭套接字,但当我再次登录时,套接字没有连接,因为工厂没有重新实例化。
不能销毁工厂,它们是单例的,只有在模块第一次需要它们时才会创建一次。
您可以在工厂中添加两个方法:setup()
, close()
,它们将创建和关闭套接字。
用户登录时呼叫setup()
,注销时呼叫close()
。