服务器使用 Atmosphere IO 定期推送

Posted

技术标签:

【中文标题】服务器使用 Atmosphere IO 定期推送【英文标题】:Server push periodically using Atmosphere IO 【发布时间】:2015-01-19 15:06:57 【问题描述】:

我尝试实现的场景如下,

1) 在@GET 处理程序中暂停所有传入请求

2) 将传入的请求资源添加到广播器

3) 使用 broadcaster.broadcast() 定期发布数据

尝试使用大气球衣和@Schedule 注释,但无法发布数据。不确定 Executorservice 是否适合这种情况。从服务器端定期发布是否有遗漏。

请指导!

【问题讨论】:

【参考方案1】:

Broadcaster.scheduledFixedBroadcast() 看起来可以定期安排服务器推送。

从服务器端调度广播,

        @PathParam("topic")
        Broadcaster broadcaster;

        @Suspend(contentType = "application/json")
        @GET
        public SuspendResponse<String> search() 
            if (broadcaster.getAtmosphereResources().size() == 0) 
                broadcaster.scheduleFixedBroadcast(new Callable<String>() 
                    public String call() throws Exception 
                    // Wait for the connection to be suspended.

                    broadcaster.broadcast("broadcast");
                    return null;
                    
                    , 5000, TimeUnit.MILLISECONDS);
            
            return new SuspendResponse.SuspendResponseBuilder<String>()
            .broadcaster(broadcaster)
            .outputComments(true)
            .addListener(new EventsLogger() 
                    @Override
                    public void onSuspend(
                    AtmosphereResourceEvent event) 
                        super.onSuspend(event);

                    
            ).build();
        

【讨论】:

以上是关于服务器使用 Atmosphere IO 定期推送的主要内容,如果未能解决你的问题,请参考以下文章

具有每个请求问题(Hibernate 和 Shiro)的 WebSocket(Atmosphere) - Vaadin

WebSockets - 创建通道和推送数据的正确方法

重新连接到服务器时如何强制 Atmosphere.js 使用首选传输?

如何使用 Atmosphere 框架调用传统的 REST-RPC 调用?

使用 java 和 Atmosphere 的基本聊天应用程序

微信客服消息群发微信定时群发微信主动推送客服消息