服务器使用 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
重新连接到服务器时如何强制 Atmosphere.js 使用首选传输?
如何使用 Atmosphere 框架调用传统的 REST-RPC 调用?