我想知道以下情况的最佳设计/类结构:
我有一个网页,向最终用户显示服务器端事件。服务器和客户端(浏览器)之间的通信是通过websockets完成的。这允许我将数据推送到网络。
此服务器端事件由服务生成。当请求线程开始流程(控制器)时,我订阅了该服务。当服务生成事件时,“控制器”会得到通知,并向浏览器发送websocket push。该事件已经显示。
到目前为止一切顺利,但是,我在控制服务订阅者列表方面存在很多问题。我不知道何时取消订阅,因为我不知道用户何时离开该页面。
我想到的结构是:
public class Controller{
WebsocketService websocketService;
AsyncNotificationsService asyncService;
public void processRequest(){
asyncService.subscribe(new Listener(){
public void do(Obj event){
websocketService.notify(process(event));
if(condition(event)) unsubscribe(this);
}
});
}
}
此代码存在一些缺陷:
我可以设计 Controller 和 AsyncNotificationsService 。什么是正确的解决方案?
你将如何实现这两个类?