用于向客户端通知服务器端事件的java cometd模式是什么



我很难理解一种在不浪费线程的情况下通知客户端的有效方法。当客户端连接到CometD servlet时,我希望开始监视客户端的服务器端事件,并在它们可用时将它们发布到客户端。这应该在线程池或不使用servlet线程的地方完成。我看到的所有示例都是源于客户端的事件和服务器上的侦听器。我需要相反的。。。我只是将Client/ServerSession对象交给我自己的机器吗?这似乎是一种常见的模式,但我找不到任何例子。

查看Servlet 3.0 Async API。特别是,ServletRequest.startAsync()将返回一个AsyncContext对象,您可以将其"交给自己的机器",然后从servlet doGet()/doPost()等返回。而不终止连接。

然后有各种模式用于将数据发送回客户端。我相信你的"自己的机器"可以从AsyncContext中获取ServletResponse并向其写入。另一种方法是在AsyncContext上调用dispatch(),这将导致你的doGet()/doPost()方法再次被调用。

相关内容

  • 没有找到相关文章

最新更新