Schemeで書くHTTP Server †
昔書いてみて放ってあったやつ。
期間限定で、実働機公開 †
とりあえず、動かしてみる → http://kaw.ath.cx:7080/index.html
もともとはここでのお題用に書いてみたもの。
OpenBSDのGaucheは、まだthread付きでコンパイルできてないので、子プロセスforkによる原始的な実装です。
かいつまんで説明 †
- httpserver.scm ... 超単純なhttpdを実装しているライブラリ
- socketのハンドリングは自前でやってます
- 大域変数maxchildrenが、同時にforkできる子プロセスの最大数。ApacheのMaxClients的なもの。
- その上にHTTP 1.0を部分実装
- 取り扱えるmethodはGETのみ。
- 送出可能なコンテンツは、Text/Htmlのみ。
- serversample.scm ... httpserver.scmの使用例
- (start-server port-num contents)でサーバが走行
- contentsはハッシュとして与える。ハッシュキーは、URLのfilepath部分。その値はそのURLが与えられたときに呼出される関数の実体を格納しておく。
- 関数は呼出されるときに2つの引数をとる。
- 1つめは、URLのfilepath部分
- 2つめは、GET methodのQUERY STRING*1。