本項目は設計変更(2012/08/07-1)により一部変更となった

WebSocketサーバーのコンセプト(2012/07/30)


開発言語と動作OS

 WebSocketサーバーの開発言語はC言語を使用する。プラグインするサーバープログラムは実行形式で標準入出力に対する入出力が行えるものであれば、どのような言語でも可能とする。開発時点で使用するプラグインサーバープログラムはC言語を使用する。
 動作OSは最初Windows版を作成し、その後FreeBSD版、CentOS版を作成する。その他のOSに関しては現在は考えていない。
 ハンドシェイクのプログラムなどエンジン部分は各OSで共通化出来るように作成する。

サーバーのスレッド・プロセス構成

 接続の待受からハンドシェイクを行い、プラグインしたサーバープログラムを起動する。この流れはUNIXのinetdを参考に作成する。
 inetdでは複数のポート番号に対する待受が行えるようになっているため、今回作成するWebSocketサーバーに関しても一つのWebServerプログラムで複数ポートの待受が出来るようにする。
 複数のポート番号で待受を行い、接続してきた全てのポートに対する応答を行うために、本プログラムはマルチスレッドを使用するものとする。ただし、プラグインサーバーはプラグインのクラッシュによりWebSocketサーバー全体がクラッシュすることが無いよう、別プロセスでの起動を行うものとする。
 inetdと同様、制御は設定ファイルのみで行えるようにするが、プログラムの起動と終了、設定の再読み込み処理などを行えるマネージャーの開発も別途行う。

 以下は待ち受けポートを12345、12346、12347、12348とした場合のスレッドとプロセスの関係図である。