2012-03-27 15 views
4

私は、クライアントが遅滞なく(=ポーリング間隔なしで)サーバーを介してお互いを照会させたいと考えています。サーバからクライアントへのJAXのプッシュ

例:サーバSは、クライアントAとB

クライアントAは、クライアントB クライアントAは、サーバSにそこに何の問題も要求をしないだろう依頼したいと考えています。 その後、サーバーSはクライアントBを要求できる必要がありますが、ポーリングなしでそれを行う方法はありますか?

すべてのnode.js/APE(for PHP)技術はウェブ用に設計されていますが、Webサーバーは使用しません。 Javaには、ウェブではないプッシュ技術/フレームワークに近いものがありますか?

私は本当に(私は例えば、クライアントごとに1つのWebServiceので終わらせたくない)

注自分の予約ポートを使用するように各クライアントを必要としないソリューションを好むだろう:すべてのクライアントがあると同じマシン上にある。

+0

クライアントは実際にデーモンですか?言い換えれば、彼らは常にサーバー上で動作していますか? – Pace

+0

あなたはそれを言うことができると思います。 – bananasplit

答えて

3

実際にWebサーバーを使用したくない場合は、JMSをチェックアウトします。つまり、プロトコルは非常に普及しているので、クールな子供たちはすべて、今日、Webサーバーを使用しています。

+0

さて、サーバーがWebサービスをホストするWebサーバーであるとしましょう。それでは、どうやってクライアントにプッシュできますか?(そこにはjavascriptはないので、ajaxやnode.jsなどはありません) – bananasplit

5

オプションのカップル...

  • プレーンソケット通信。 java.net.Socket、java.net.ServerSocket。柔軟性は最大限に高めますが、低レベルのTCP/IP API /コンセプトに関する知識が必要です。

  • 良い古いRMI。 TCP/IPの上にJavaベースのRPC層。クライアントとサーバーの両方がJavaで、一般的に同じサブネットにある場合に効果的です。クライアントおよび/またはサーバーが侵害された場合に問題が生じる可能性があります。

  • Spring Remoting、それは実際にかなりまともです。

  • 双方向Webサービス。つまり、クライアントはコールバックを行う必要があるときにサーバーが呼び出す独自のWSをホストします。

  • JMSすでに言及した人です。

  • 分散データ構造、ウェブサーバは必要ありませんから、選択したためのオプションのhttp://www.hazelcast.com/

ロットをチェックしてください。

+0

- プレーンソケット通信:私はフレームワークを要求します。あなたがソケットのレベルで作業しているリモートオブジェクト。 - RMI/WS:各クライアントに事前定義されたTCPポートを使用する必要があります。これはオプションではありません(ご迷惑をおかけします)。 - JMSは依然として私が思う要求 あなたの最後のリンクをチェックアウトします! – bananasplit

+0

Endpoint.publis(*)APIを使用して実行時に決定されたポートでWSをプログラムで起動し、サーバー上のWSを呼び出してサーバーにこのエンドポイントURLを知らせることができます。このようにして、クライアントはあらかじめ定義されたポートを使用する必要はありません。 –

+0

TCPプッシュ技術では、サーバーに単一のTCPポートを使用し、クライアント側では「動的ポート範囲」にあるポートを使用し、マシン上の何か!このような一時的なポートを取得して使用することが可能かどうか、またはそれらが厳密にTCPプロトコルに予約されているかどうかは疑問です。 – bananasplit

0

ユースケースにはメッセージングプロトコルが必要です。私たちはあなたの問題の範囲を本当に知っているわけではありませんが、すでにクライアント間で要求を交換するサーバーを望んでいるので、自分のアプローチではなく既存のソリューションを使用します。

JMSは、確かに実行可能なJavaベースの解決策であり、別のものはXMPPであり、これはインスタントメッセージングでよく使用されるリアルタイム通信プロトコルです。

主要な言語とプラットフォームごとにサーバーとクライアントの両方をサポートするオープンスタンダードです。これにより、スタンドアロンのアプリケーション、Webベースのアプリケーション、およびモバイルデバイス用のアプリケーションがすべて互いに通信できるようになります。あなたのユースケースの唯一の可能性は、それがテキストベースであることです。あなたは何をあなたが前後に渡したいと思っているか言っていないので、これがあなたの請求書に合うかどうかはわかりません。

Javaおよび任意のOSサーバーでクライアント側の開発にSmackを使用できます。

関連する問題