2
import Network.Wai.Application.Static (staticApp, defaultWebAppSettings)
import Network.Wai.Handler.WebSockets (intercept)
import Network.Wai.Handler.Warp (runSettings, defaultSettings, 
                                 settingsIntercept, settingsPort)

main :: IO ()
main = do
    let s = defaultSettings {settingsPort=9160, settingsIntercept=intercept app}
    runSettings s $ staticApp $ defaultWebAppSettings "www"

1)知りたいのは、warpが同じポートでWebSocketリクエストと静的リクエストを区別して、リクエストに応じて静的アプリまたはインターセプトアプリを実行するだけでオーバーヘッドを防ぐことができるかどうかです。

http://hackage.haskell.org/packages/archive/wai-websockets/1.3.1/doc/html/src/Network-Wai-Handler-WebSockets.html

2)上記のソースファイルはコンジットを使用しています。つまり、メモリをオーバーフローさせる可能性のある大量の受信データを心配することなく、WebSocketのreceiveDataに厳密なByteStringを使用しても安全ですか、それとも怠惰なByteStringを使用する必要がありますか?

httpチャンク転送エンコーディングのようにWebSocketをチャンクすることはできないことに注意してください。

4

1 に答える 1

1
  1. WebSocketリクエストを受信した場合、アプリケーション自体が呼び出されることはなく、WebSocketハンドラーがすぐに引き継ぎます。

  2. あなたのコードを見ずに、あなたがそれをあまり多くの情報を読んでいないことを保証する方法はありません。ただし、記述している方法で厳密なByteStringを使用することは可能です。

于 2012-11-15T05:44:09.440 に答える