【问题标题】:Atmosphere framework, BroadcasterFactory.getDefault() alternativeAtmosphere 框架,BroadcasterFactory.getDefault() 替代方案
【发布时间】:2014-08-14 07:22:04
【问题描述】:

我正在使用 Atmosphere 框架,它在库的最新版本中查找该方法: BroadcasterFactory.getDefault() 已弃用。 (而且这种方法基本上到处都在使用,我找不到如何使用新“方式”的示例)

javadoc 声明:

 @deprecated Use {@link org.atmosphere.cpr.AtmosphereConfig#resourcesFactory()}

但是我找不到单个文档如何让 AtmosphereConfig 能够获取 resourceFactory(这是一个实例方法)。

谁能告诉我如何获取配置 .. 或 AtmosphereFramework 对象本身,我可以从中获取配置或任何 up2date 示例?

【问题讨论】:

    标签: java websocket atmosphere


    【解决方案1】:

    不确定是否有效,但尝试获取ServletContext 并使用getAttribute(AtmosphereFramework.class.getName()) 获取AtmosphereFramework。如果您使用的是 Spring,请尝试直接自动装配 AtmosphereFramework。

    您也可以从AtmosphereResource 获取BroadcasterFactory,然后查找Broadcaster,例如:

    private String path;
    
    private BroadcasterFactory broadcasterFactory;
    
    @Ready(value = Ready.DELIVER_TO.ALL)
    public void onReady(final AtmosphereResource r) {
    
        System.out.println("onConnect");
    
        r.addEventListener(new AtmosphereConnectionController());
    
        if(broadcasterFactory == null){
            path = r.getBroadcaster().getID();
            broadcasterFactory = r.getAtmosphereConfig().getBroadcasterFactory();
        }
    }
    //later in code
    broadcasterFactory.lookup(path).broadcast("message");
    

    【讨论】:

      【解决方案2】:

      使用依赖注入。在我的项目中,它是这样的:

      @MeteorService(path = "/recursos/fila-de-atendimento", interceptors = {AtmosphereResourceLifecycleInterceptor.class})
      public class FilaDeAtendimentoResource extends HttpServlet {
      
          @Inject
          private BroadcasterFactory broadcasterFactory;
      
          ...
      
          /** Used for registering for a message */
          public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
              ...
              Broadcaster broadcaster = broadcasterFactory.lookup(broadcasterId, true);
              meteor.setBroadcaster(broadcaster);
              ...
          }
      
      }
      

      【讨论】:

      • 这不起作用,至少对我来说,不知道为什么,但是 BroadcasterFactory 没有被正确注入并且为空。
      猜你喜欢
      • 2010-11-09
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2014-12-02
      相关资源
      最近更新 更多