您如何在 Play Framework 的 Atmosphere 中将路径路由到 ManagedService
How do you route the path to ManagedService in Atmosphere on Play Framework
我正在使用 Play Framework 中的 atmosphere-play 插件,以及基本的 atmosphere-runtime。参见 https://github.com/Atmosphere/atmosphere-play
我正在尝试使用 ManagedService 注释设置 class,如教程中所述,但无法弄清楚如何通过 Play 路由器文件映射路径,而且一直无法找到其他人这样做过。文档完全跳过了这一步,我在尝试通过 atmosphere 客户端脚本连接到服务器时收到 404 错误。
示例代码:
@ManagedService(path = "/poll")
public class PostPoller {
...
}
客户:
var socket = $.atmosphere;
var subSocket;
var transport = 'websocket';
// We are now ready to cut the request
var request = { url: '/poll',
contentType : "application/json",
trackMessageLength : true,
shared : true,
transport : transport ,
fallbackTransport: 'long-polling'};
如何在 Play 路由器中设置到 ManagedService 的路由?
万一其他人正在寻找这个,我可以通过将以下内容添加到主应用程序控制器来让它在 Atmosphere-Play 2.3.0 中工作:
import static org.atmosphere.play.AtmosphereCoordinator.instance;
public class Application extends Controller {
@Inject
public Application(ApplicationLifecycle lifecycle) {
// replace PostPoller with the ManagedService class you are using
instance.discover(PostPoller.class).ready();
lifecycle.addStopHook(() -> {
instance().shutdown();
return CompletableFuture.completedFuture(null);
});
...
}
...
}
在 https://github.com/Atmosphere/atmosphere-play/issues/39 找到了答案。
我正在使用 Play Framework 中的 atmosphere-play 插件,以及基本的 atmosphere-runtime。参见 https://github.com/Atmosphere/atmosphere-play
我正在尝试使用 ManagedService 注释设置 class,如教程中所述,但无法弄清楚如何通过 Play 路由器文件映射路径,而且一直无法找到其他人这样做过。文档完全跳过了这一步,我在尝试通过 atmosphere 客户端脚本连接到服务器时收到 404 错误。
示例代码:
@ManagedService(path = "/poll")
public class PostPoller {
...
}
客户:
var socket = $.atmosphere;
var subSocket;
var transport = 'websocket';
// We are now ready to cut the request
var request = { url: '/poll',
contentType : "application/json",
trackMessageLength : true,
shared : true,
transport : transport ,
fallbackTransport: 'long-polling'};
如何在 Play 路由器中设置到 ManagedService 的路由?
万一其他人正在寻找这个,我可以通过将以下内容添加到主应用程序控制器来让它在 Atmosphere-Play 2.3.0 中工作:
import static org.atmosphere.play.AtmosphereCoordinator.instance;
public class Application extends Controller {
@Inject
public Application(ApplicationLifecycle lifecycle) {
// replace PostPoller with the ManagedService class you are using
instance.discover(PostPoller.class).ready();
lifecycle.addStopHook(() -> {
instance().shutdown();
return CompletableFuture.completedFuture(null);
});
...
}
...
}
在 https://github.com/Atmosphere/atmosphere-play/issues/39 找到了答案。