4

アプリケーション サーバーが接続して、アプリケーションを実装するサーバーのリストに自分自身を追加できる Web サービスを作成したいと考えています。その後、クライアントはサービスに接続して、サーバーのリストを取得できます。サーバーをメインサーバーリストに追加するためにMinecraftのハートビートがどのように機能するかに似ています。

私はそれを自分で簡単に実装できましたが、誰かがすでにこのようなものを作成していることを願っています.

高度な機能が役立ちます。次のようなもの:

  • サーバーに現在接続しているユーザー数など、アプリケーション固有のプロパティに対してクライアントがクエリを実行できるようにする
  • サーバー リストを複数のマシンに分散する
  • 一定時間内にハートビートを送信しなかった場合に、リスト内のサーバーのエントリをタイムアウトにする

このようなサービスを知っている人はいますか?ローカル LAN サービスの検出を行うためのオープン プロトコルとサーバーがあることは知っていますが、これは WAN サービスになります。

4

2 に答える 2

1

基本的には自分で書いても構いませんが、公開用のものを持っている人がいるかどうかはわかりません(10年以上前に書いたものですが、会社用です)。

  • データベース (TableCols: auto-counter、svr_name、svr_ip、check_in_time、その他のデータ)
  • ハートビートを受信するコード ( http://<you-app.com>?svr_name=XYZ&svr_ip=P.Q.R.S)
  • 特定の check_in_time 内にサーバーを一覧表示するコード
  • たまに大掃除をするコード (例: 古いレコードを削除する)

ハートビートを送信するには、http:// 呼び出しを送信するだけです。Linux では crontab で wget* を使用し、Windows ではタスク スケジューラで wget.exe を使用します。

これはアプリケーション固有であるため、自分で作成したとしても、他の人はソース コードを変更しないと使用できません。

于 2011-11-05T03:11:11.783 に答える
1

意図したアプリケーションに関連するプロトコルは次のとおりです。

XRDSのドキュメントはわかりにくいですが、サービスの説明を XML 形式でプッシュできる場合があります。サービスタイプの仕様は一般的なものかもしれませんが、委員会の話を解読しようとすると頭が痛くなります。

XMPP Service Discoveryプロトコル (以前は Jabber として知られていたプロトコルの一部) も有望に見えましたが、サービスの説明をプッシュできたとしても、このリストに記載されているサービスの 1 つであることを期待しているようです。それを拡張すると、非標準になります。

最後に、seap (SERvice Announcement Protocol)というものを見つけました。それは古いです、ガタガタです、ソースは適切かもしれません、それはCとPerlで書かれています、それはお粗末ですが、あなたが望むことをするようです.

サービス アナウンスのパルスをプッシュすることは、アプリケーション固有の些細な問題であるように思われるため、一般的なケースを解決することを考えた人はほとんどいません。

私のアドバイス?上記のプロトコルとソースを読んでインスピレーションを得て (私は seap から始めます)、一般的な (おそらく xml ベースの) プロトコルを自分で作成、実装、公開します。既存のものはすべて、アプリケーション固有のもの、理解できないもの、またはお粗末なもののいずれかのようです。

于 2011-11-09T16:50:41.853 に答える