CometD的REST API

时间:2012-06-07 07:32:30

标签: cometd

我目前正在使用CometD服务器以及jQuery客户端实现。我想知道的是,在我的服务器中是否有任何有效的方法可以让客户端检索信息(即字符串)。我只需要检索一次字符串,之后我就不再需要再使用该服务了。

目前我正在做的是使用服务通道并在服务器中为它添加一个监听器。然后我让我的客户端向该频道发送随机消息。收到消息后,服务器将检索字符串并使用相同的通道将其广播回客户端。

然而,我发现它是一种非常迂回的方式,此外,客户端在收到字符串后不再需要收听频道。有没有更好的方法呢?

更新:我也将服务器用于其他实时频道,这就是我选择CometD作为其发布广播功能的原因。

1 个答案:

答案 0 :(得分:0)

如果您只需要将字符串信息返回给请求它的客户端,并且您不需要将此信息广播给其他客户端,那么您不需要CometD:一个简单的Servlet就足够了(你甚至不需要REST)。

另一方面,如果你需要将字符串信息广播给多个客户端,那么CometD就是适合这项工作的工具,毕竟它不是那么复杂,而是它的作用。

客户端:

cometd.init("http://server/cometd");
cometd.subscribe("/info", function(m)
{
    // Do something with the message, then disconnect
    cometd.disconnect();
});
cometd.publish("/service/myservice", {});

服务器:

@Service
class MyService
{
    @Inject
    private BayeuxServer bayeux;
    @Session
    private LocalSession session;

    @Listener("/service/myservice")
    public void processMyService(ServerSession s, ServerMessage m)
    {
        String info = retrieveInfo();
        // Broadcast
        bayeux.getChannel("/info").publish(session, info, null);
    }
}

您可以在此找到有关CometD annotated services的更多信息。