Java の Comet でサーバープッシュを行う(2)

Java の Comet でサーバープッシュを行う(1)のつづき。

次に、プッシュの方法については、Java 側では以下のように MessageSender にメッセージを受け渡します。

      ServletContext servletContext = ServletContextLocator.get();

      MessageSender messageSender =
        (MessageSender) servletContext
          .getAttribute("MessageSender");

      messageSender.sendMessage(recipients, jsonString);

ブラウザ側では、JavaScript で待ち受ける必要があるため、次のように Ajax で繋いで待ち受けます。

var retryCount = 0;
function join() {
    var params = {
       url: "push/",
       timeout: 10 * 60 * 1000,
       cache: false,
       contentType: "application/javascript",
       success: function(data, status) {
           // メッセージ受信
           join();
       },
       error: function(data, status) {
           if(retryCount < 10) {
               retryCount++;
               join();
           }
       }
    }
    jQuery.ajax(params);
}

これで完成です。チャットのようなリアルタイム通信もこの方法で実現することができます。