Skip to content

Latest commit

 

History

History
118 lines (94 loc) · 3.79 KB

server.wiki

File metadata and controls

118 lines (94 loc) · 3.79 KB

  1. summary サーバー
  2. labels Manual

Table of Contents

導入

ソケットサーバーを作成することができます。 複数クライアントから同時にリクエストを受け付ける'フォーク'と、順に処理する'シーケンシャル'の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が必要です。

結果は連想配列で返されます。