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 回答