XMPPプロトコル(openfireサーバ)に基づくメッセージプッシュ実装

1859 ワード

最近はAndroidクライアントメッセージプッシュの実現に注目している方も多いようですが、私は以前のプロジェクトでJava PCクライアントメッセージプッシュを使ったことがありますが、原理的には一致しているはずなので、ここで個人的な心得を共有してみましょう.
  • メッセージプッシュ実装原理
  • ここでのメッセージプッシュは、通常、サーバ側からクライアントに送信されるメッセージ、例えば待機事項、ニュースなどを指す.
    技術的な観点から、メッセージプッシュは本質的にTCP/IPに基づくネットワークIOストリーム伝送であるが、このIOストリームはサーバによって開始されるように見えるが、上記の条件から、基本的なメッセージプッシュフレームワークのJava実装は、Java NIOで実現されたサーバがあり、socketでこのサーバに接続されたクライアントが複数あり、その間にバイナリストリームで情報を伝送する.簡単に言えば、実現は容易ではありませんが、XMPPプロトコルに基づくopenfireは上記の条件にぴったり合っています.それだけでなく、この案には次のような利点があります.
  • openfireはオープンソースでJavaで書かれていますが、これはJavaプログラマーにとって重要です.の
  • XMPPプロトコルはXMLストリームを用いてメッセージを伝送し、可読性と拡張性に優れ、独自のプッシュメッセージ構造を定義するのに便利である.
  • XMPPプロトコルはPCとAndroidでそれぞれ対応するプロトコルでsmackとasmackを実現し、XMLプロトコル解析を書く必要はありません.

  • では、openfireでメッセージをプッシュするにはどうすればいいのでしょうか.私の考えはこうです.
    2人のユーザがopenfireを使用してチャットしている場合、メッセージはユーザAからサーバを介してユーザBに流れるので、メッセージセンターというユーザが想像できます.その役割は、システムが必要である場合、あるユーザに対応するメッセージを送信し、私たちのクライアントがこのようなユーザのメッセージを受信した場合、それをシステムメッセージとして、簡単なメッセージプッシュを実現することです.
    もう1つの問題は、システムがどのユーザーにメッセージを送信するか、いつメッセージを送信するかをどのように知っているか、http postでopenfireサーバに通知し、パラメータでメッセージボディと送信オブジェクトを指定できるかということです.
  • openfireによるメッセージプッシュ
  • 最初のステップは、openfireを使用してメッセージをプッシュする前提はopenfireシステムにアカウントを登録することです.openfireアカウントのカスタムデータベースの統合については、私の別の文章を見てください.http://blog.csdn.net/nomousewch/article/details/7546083ああ、ここでは言わない.
    2つ目はopenfireにプラグインを作成し、コアコードを貼り付けます.
    	public static void pushMessage(JID to, JID from, String body,
    			String subject) {
    		Message message = new Message();
    		message.setFrom(from);
    		message.setTo(to);
    		message.setBody(body);
    
    		if (StringUtils.isNotBlank(subject)) {
    			message.setSubject(subject);
    		}
    
    		XMPPServer.getInstance().getRoutingTable().routePacket(to, message, true);
    	}
    
    第3のステップでは、プラグインにサーブレットを定義し、上記の方法を呼び出す.
    第4のステップでは、トラフィックシステムでhttpクライアントでサーブレットを呼び出し、指定したユーザにメッセージをプッシュする.