0

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

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

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

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

4

1 回答 1

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注释服务的更多信息。

于 2012-06-07T08:32:31.007 回答