0

現在、jQuery クライアントの実装と共に CometD サーバーを使用しています。私が知りたいのは、クライアントが情報 (つまり文字列) を取得するためにサーバーに REST API を配置する効率的な方法があるかどうかです。文字列を取得する必要があるのは 1 回だけで、その後はサービスを使用する必要はありません。

現在、私がやっている方法は、サービスチャネルを使用して、サーバーにリスナーを追加することです。次に、クライアントにランダムなメッセージをこのチャネルに送信させます。メッセージを受信すると、サーバーは文字列を取得し、同じチャネルを使用してクライアントにブロードキャストします。

ただし、これは非常に回りくどい方法だと思います。さらに、文字列を受信したときにクライアントがチャネルをリッスンする必要はありません。それを行うより良い方法はありますか?

更新: 他のリアルタイム チャネルにもこのサーバーを使用しているため、パブリッシュ/ブロードキャスト機能に CometD を選択しました。

4

1 に答える 1

0

文字列情報を要求元のクライアントに返すだけで、この情報を他のクライアントにブロードキャストする必要がない場合は、CometDは必要ありません。単純なサーブレットで十分です (REST も必要ありません)。 )。

一方、文字列情報を複数のクライアントにブロードキャストする必要がある場合は、CometD が最適なツールです。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 に答える