webapp请求/控制器中的监听器

时间:2014-02-18 09:24:00

标签: java design-patterns web-applications concurrency websocket

我想知道以下情况的最佳设计/类结构:

我有一个网页,向最终用户显示服务器端事件。服务器和客户端(浏览器)之间的通信是通过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 。什么是正确的解决方案?

你将如何实现这两个类?

0 个答案:

没有答案
相关问题