服务器使用 Atmosphere IO 定期推送
Server push periodically using Atmosphere IO
我尝试实现的场景如下,
1) 暂停@GET 处理程序中的所有传入请求
2) 将传入请求资源添加到广播者
3) 定期 post 数据间隔 broadcaster.broadcast()
尝试使用 atmosphere-jersey 和 @Schedule 注释但无法 post 数据。不确定 Executorservice 是否适合这种情况。定期从服务器端 posting 是否遗漏了什么。
请多指教!
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();
}
我尝试实现的场景如下,
1) 暂停@GET 处理程序中的所有传入请求
2) 将传入请求资源添加到广播者
3) 定期 post 数据间隔 broadcaster.broadcast()
尝试使用 atmosphere-jersey 和 @Schedule 注释但无法 post 数据。不确定 Executorservice 是否适合这种情况。定期从服务器端 posting 是否遗漏了什么。
请多指教!
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();
}