2012-02-22 11 views
1

Common Lispでいくつかの同期Webプログラミングを行う予定です。オプションを切り上げています。それらの1つはsw-httpで、「AJAX/Cometに合わせたHTTPサーバー」です。ドキュメントは、私が見つけることができる唯一の作品はsw-httpのAPPLICATION-FINDER-FNについての詳細

サブ-Classサーバにあなたを伝えると、あなたのコンテンツを生成するコールバック にAPPLICATION-FINDER-FNスロットを設定するためのビットが欠けているようです。

あり、そのコールバックが(いくつかの肝いりはそれが引数としてserverconnectionを期待するべきであると私に言ったように見えるべきかについてのメモや例のように見えるが、それが返すか、何をすべきかについては何もしません。 )。

(lambda (server conn) (declare (ignore server conn)) "Hello world") 

のようなナイーブなものに設定する

は何もしていないようですので、私は、私はどちらかがどこかストリームに書き込むか、いくつかのあまりthan-にserver/connectionと対話する必要があると仮定します完全に明白な方法です。

ヒント

+2

明らかに、あなたは 'connection'のストリームに書き込む必要があります。しかし、 'sw-http'コードを見て、私はそれを上に何かを開発する方法を研究する価値があるかもしれませんが、私は生産のためにそれを使用することを示唆しません... –

+1

私はHunchentootが一般的なLisp Webサーバーであると信じています子供たちはこれらの日を使用しています。 –

+0

P.S.、私は@ VsevolodDyomkinに同意したと思いますが、このライブラリはプライムタイムの準備ができていません。 –

答えて

1

ハンドラはresponseのあるchunksを持つconnectionを取ります。

おそらくあなたはconnectionresponseの(octetsある)chunksにあなたのコンテンツを追加します。幸いにも、これを簡単にするためのヘルパーメソッドがいくつか定義されています。

あなたは(HTTP-SWは、私がすることはできませんので、コンパイルするために、私は得ることができなかった)、これを試してみてください:

(defun hello (server connection) 
    (let*((response (cn-response connection)) 
     (chunks (rs-chunks response))) 
    (queue-push chunks 
       (mk-response-status-code 200) 
    (queue-push chunks 
       (mk-response-message-body "Hello cruel world")))) 

(defclass my-server (server) 
    ((application-finder-fn :initform #'hello))) 

幸運を!

+0

特定のパッケージからの 'enqueue'か、' sw-http'の一部であるべき概念上の関数ですか? – Inaimathi

+0

@Inaimathi、これはおそらくaromyxoからのキュープッシュであり、引数は逆の注文です。 –

+0

私は一時的にこれを受け入れていますが、まだ実際には機能していません(私は明日、結果を投稿します)。 – Inaimathi

関連する問題