- summary サーバー
- labels Manual
ソケットサーバーを作成することができます。 複数クライアントから同時にリクエストを受け付ける'フォーク'と、順に処理する'シーケンシャル'の2つのタイプのサーバーがあります。
サーバーを作成するためには、リクエストを処理するイベントハンドラが必要です。デフォルトで用意されているBEARのリソースハンドラでは、外部RSSサイトリソース、スタティックリソースを含むBEARで扱える全てのリソースがソケット通信で取得できます。
* commet使用アプリ(リアルタイム性のあるチャットなど) * マッシュアップ用リモートリソース取得 * 非BEARシステムからのBEARリソースの取得 * ブロードキャスト機能(シーケンシャルのみ)
# `<PEARディレクトリ>/BEAR/data/cli/server.php`のスクリプトを`<アプリケーション>/cli/`にコピーします # スクリプトを編集。ポート番号とサーバータイプ、ハンドラを指定します。
# 起動します。
立ち上げたサーバーをテストするにはtelnetで接続します。
コマンドを入力します。helpは/helpで見れます。
とします。引数はクエリー形式で与えます。連想配列やオブジェクトも可能です。ここを参考にしてくださいhttp_build_query
これはaで受け取った文字を2度繰り返して返し、bで受け取った文字を他の接続クライアントにブロードキャストするリソース*kodama*をreadした例です。
このような結果が帰ります。
フォーマットは上の行から、
# 結果コード # ヘッダー情報(複数行) # 空行 # 結果(ボディ)
と3つの情報が返されます。
このサーバーに接続していた他のクライアントにはこのような結果が返ります。
コードはBEAR_Voのコードと同じくHTTPに対応していて、以下の3種類のうちいずれかです。
* 200 OK * 400 呼び出し不良 (Bad Request) * 500 呼び出された側のエラー (Server Error)
サンプルのkodamaリソースです。
デフォルトのハンドラではbroadcastヘッダーの内容がブロードキャストされ、return値がクライアントに渡されます。
非BEARシステムからBEARサーバーにリクエストする例です。
BEAR/Server/Client.phpファイルとPEAR::Net_Socketが必要です。
結果は連想配列で返されます。