2012-11-14 86 views
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請求和同一端口上的靜態請求,以防止根據請求僅運行靜態或攔截應用程序開銷。Warp Wai WebSockets攔截

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

2)上述源文件使用管道,這是否意味着它是安全的使用我的WebSocket receiveData的嚴格的字節串,而不必擔心潛在的大量輸入數據的可能溢出我的記憶還是應該我改用一個懶惰的ByteString?

請注意,您不能在http分塊傳輸編碼中分塊websocket。

回答

1
  1. 如果收到websocket請求,那麼應用程序本身將永遠不會被調用,並且您的websocket處理程序將立即接管。

  2. 沒有看到您的代碼,沒有辦法保證你沒有閱讀太多的信息。但它可能使用您描述的方式嚴格的ByteString。

+0

我正在使用的代碼是https://github.com/gertcuykens/haskell-design –