問題タブ [haskell-wai]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - シンプルな wai アプリケーションで wai-handler-devel を使用する方法
wai を使用した基本的な「hello world」アプリケーションのセットアップがあり、wai-handler-devel を使用したいと考えていますが、方法が不明で、wai プロジェクトでの使用例が見つかりません。
基本的な wai アプリで wai-handler-devel を動作させるにはどうすればよいですか?
注: 「wai-handler-devel: コマンドが見つかりません」という問題が発生した場合は、ここ ( https://gist.github.com/1499226 ) に修正があります。
haskell - WAI(生のリクエストボディ)でコンジットを消費する方法
私は、WAIのシナトラのようなラッパーであるscottyを使用しています。生のリクエスト本文をバイト文字列として取得して、jsonとして解析できるようにします。以下は近いです。これは、WAIを使用してボディを消費することに関する他の質問と似ていますが、ボディをバイト文字列として使用する必要があるため、および別のモナドであるActionMにいるため、異なります。
明らかにうまくいきません。なんらかのリフトか何かが必要だと思いますが、何を使うべきかわかりません。liftIO
正しくありません、そしてlift
私に奇妙なエラーを与えます。
http://hackage.haskell.org/packages/archive/scotty/0.0.1/doc/html/Web-Scotty.html
http://hackage.haskell.org/packages/archive/wai/latest/doc/html/Network-Wai.html
haskell - 有効期間の長いリソース (ファイル ハンドル) を使用して Web サービスをワープする
すべてのリクエストからアクセスしたい長寿命のリソースを持つワープを使用してWebサービスを作成する方法を理解しようとしています(つまり、リクエストごとではなく、サーバーの存続期間中リソースが存在するようにしたい)。これは ResourceT の使用であると想定していますが、実際にこれをどのように行うかはわかりません。
私の特定の用途は、現在状態モナドにラップされているファイルハンドルを公開したいということです。warp と ResourceT を使用するときにこれが意味をなさない場合は、喜んでこのアプローチを変更します。このコードの初期バージョンは、コード レビューで確認できます: https://codereview.stackexchange.com/questions/9177/my-simple-haskell-key-value-file-store
前もって感謝します、
マット
haskell - Warp/WAIによるスレッドセーフ状態
/を使用してその状態をState
モナドに格納するWebサーバーを作成したいと思います。このようなもの:wai
warp
もちろん、コメント行は機能しません。目的は、カウンターを状態モナドに格納し、要求ごとにその増加する値を表示することです。
また、スレッドセーフを取得するにはどうすればよいですか?ワープはミドルウェアを順次または並行して実行しますか?
IORef
州で利用できるオプションは何ですか?このシナリオで使用できる以外に何かありますか?
州が安全を提供していることは理解していますが、ワイは州を許可していないようです。
必要なのは、他の場所から呼び出すことができる非常に単純なシングルスレッドRPCだけです。Haxr
パッケージには別のWebサーバーが必要ですが、これはやり過ぎです。Node.JSからのHaskellの呼び出しを参照してください-提案がなかったので、Wai/WarpとAesonを使用して単純なサーバーを作成しました。しかし、WAIは同時実装をサポートするように設計されているため、事態は複雑になっているようです。
haskell - wai での予期しないコンジットの動作
wai を使用して、非常に単純な「エコー」Web アプリケーションを作成しようとしています。私がやりたいのは、POST されたデータを返信することだけです (メソッドは本当に気にしませんが、curl を使用しており、curl は POST を使用しているので、それが目的です)。私の簡単なWebサーバーはこれです:
私が期待していたのは、基本的にリクエストボディをレスポンスボディに結びつけることcurl --data @/usr/share/dict/words localhost:3000
です。それは私の単語ファイルを私に吐き返します。代わりに、空の本体が返されます。「-v」を指定して curl を実行すると、アプリが「200 OK」とデータなしで応答していることがわかります。ここで何が間違っているのかわかりません。
アプリケーション関数を次のように置き換えると:
OverloadedStrings プラグマを追加して「Hello World」部分が機能するようにすると、アプリがリクエスト本文全体を stdout に出力するので、curl がデータを適切に送信していることがわかります。また、curl stdout に「Hello World」が出力されるので、curl が期待どおりに機能することがわかります。requestBody を ResponseSource に結び付けているところで何か間違ったことをしているに違いありませんが、表示されません。
haskell - Yesod アプリケーションに「常時実行」スレッドを追加する場所
Yesod アプリケーションを作成していますが、Web 以外のサービスもいくつかフォークする必要があります。(UDP リスナー、TCP リスニング ポートなど)
アプリが「yesod devel」で実行されているか、本番用にデプロイされているかに関係なく、これがシームレスに機能するように、フォークをスプライスする正しい場所はどこですか。
PS私は本当に疑似メインを追加したいだけです。これは、WAIを介してアプリを実行するWebサーバーによって(サービスの開始時に)フォークされます。
http - WAI を使用したフィボナッチ Web サービス
WAI を使用して単純なフィボナッチ Web サーバーを作成しようとしていますが、型がわかりません。このコードは私がやりたいことの本質ですが、壊れています。getQueryArg
関数は a を返し、それを関数Maybe ByteString
で使用したいと考えていfibHandler
ます。
Maybe
で を正しく処理するにはどうすればよいfibHandler
ですか?- Maybe で putStrLn を呼び出すにはどうすればよいですか? がんばっているのです
fmap
が、なかなかうまくいきません。
[更新: このコードの作業コピーはこちら: https://gist.github.com/3145317 ]
haskell - unwrapResumableからの「解放」はどうする?
簡単な Wai-to-uwsgi プロキシを作成しましたが、その際に を使用する必要がありましたunwrapResumable
。Pipe
これにより、最終的に呼び出す必要があるアンラップされた「リリース」関数が得られます。リリース関数のタイプは ですResourceT IO ()
。現在のリソースに登録したいと思いますが、そのためにはリリースを にする必要がありますIO ()
。リリース機能はどうすればいいですか?
haskell - WAIアプリケーションはghciで動作しますが、runhaskellでは動作しません
ReaderTを使用して次のようにリクエストへのアクセスを許可する単純なWAIアプリケーションを作成しました。
ここhandle
で、は処理の大部分を実行する関数です。次に、アプリケーションでそれを呼び出します。
しかしrunhaskell main.hs
、私に次のことを与えます:
これは2つの理由で私を混乱させます:
- なぜそのタイプを期待しているのか分かりません
- 呼び出し
resp <- runReaderT (handle a) defaultRequest
はGHCIで機能します!
なぜこうなった?
windows - WAI、WindowsでWarpを実行する際の問題
(Wai)で(Warp)用の簡単なHelloWorldアプリケーションを作成しました。より複雑なアプリと同様に、UbuntuLinuxでも正常に動作します。しかし、このHelloWorldアプリをWindowsで実行することすらできません。Windows 7 Home Premium SP132ビットでHaskellPlatform(インストールファイル2012.2.0.0)を使用しています。
これは(Linuxで動作する)コードです:
これらは、コードをロードして実行したときのGHCIメッセージです(メイン):
コードをロードした後、Webサーバーが実行されていないように見えます。
私はいくつかの一般的な落とし穴に遭遇しているかもしれないと思います-もしそうなら私に知らせてください。
すべてのフィードバックを事前に感謝します。
(更新:以下の回答に記載されているように、これらのエラーはCtrl-Cアクションのみが原因であり、ランタイムが強制終了され、質問のWai / Warpの予期しない動作の一部ではありません。)
Ctrl-Cを数回押して発生すると、次のメッセージまたはさまざまなメッセージが表示されます。