Haskell 经纬网球节截距

Haskell 经纬网球节截距,haskell,yesod,Haskell,Yesod,1) 我想知道的是,warp是否能够区分同一端口上的websocket请求和静态请求,从而根据请求仅运行静态或拦截应用程序,从而防止开销 2) 上面的源文件使用了导管,这是否意味着对我的websocket receiveData使用严格的ByteString是安全的,而不必担心可能会溢出内存的大量传入数据,还是应该改用惰性ByteString 请注意,不能像http分块传输编码那样对websocket进行分块 如果收到websocket请求,那么应用程序本身将永远不会被调用,您的websock

1) 我想知道的是,warp是否能够区分同一端口上的websocket请求和静态请求,从而根据请求仅运行静态或拦截应用程序,从而防止开销

2) 上面的源文件使用了导管,这是否意味着对我的websocket receiveData使用严格的ByteString是安全的,而不必担心可能会溢出内存的大量传入数据,还是应该改用惰性ByteString

请注意,不能像http分块传输编码那样对websocket进行分块

  • 如果收到websocket请求,那么应用程序本身将永远不会被调用,您的websocket处理程序将立即接管

  • 如果没有看到您的代码,就无法保证您没有阅读过多的信息。但是可以按照您描述的方式使用严格的ByteString

  • 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"