diff --git a/services/cannon/cannon.cabal b/services/cannon/cannon.cabal index 840245b0d4d..382b650cdd6 100644 --- a/services/cannon/cannon.cabal +++ b/services/cannon/cannon.cabal @@ -58,7 +58,7 @@ library , wai-utilities >= 0.11 , wai-websockets >= 3.0 , warp >= 3.0 - , websockets >= 0.9 + , websockets >= 0.11 executable cannon main-is: src/Main.hs diff --git a/services/cannon/src/Cannon/API.hs b/services/cannon/src/Cannon/API.hs index 49d300e3958..b5d28f84525 100644 --- a/services/cannon/src/Cannon/API.hs +++ b/services/cannon/src/Cannon/API.hs @@ -24,7 +24,6 @@ import Network.Wai.Utilities.Server import Network.Wai.Utilities.Swagger import Network.Wai.Handler.Warp hiding (run) import Network.Wai.Handler.WebSockets -import Network.WebSockets (defaultConnectionOptions) import Prelude hiding (head) import System.Logger.Class hiding (Error) import System.Random.MWC (createSystemRandom) @@ -32,6 +31,7 @@ import System.Random.MWC (createSystemRandom) import qualified Cannon.Dict as D import qualified Data.Metrics.Middleware as Metrics import qualified Network.Wai.Middleware.Gzip as Gzip +import qualified Network.WebSockets as Ws import qualified System.Logger as Logger run :: Opts -> IO () @@ -124,8 +124,12 @@ await :: UserId ::: ConnId ::: Maybe ClientId ::: Request -> Cannon Response await (u ::: a ::: c ::: r) = do l <- logger e <- wsenv - case websocketsApp defaultConnectionOptions (wsapp (mkKey u a) c l e) r of + case websocketsApp wsoptions (wsapp (mkKey u a) c l e) r of Nothing -> return $ errorRs status426 "request-error" "websocket upgrade required" Just rs -> return rs where status426 = mkStatus 426 "Upgrade Required" + wsoptions = Ws.defaultConnectionOptions + { Ws.connectionCompressionOptions = Ws.PermessageDeflateCompression Ws.defaultPermessageDeflate + , Ws.connectionStrictUnicode = True + } diff --git a/services/cannon/stack.yaml b/services/cannon/stack.yaml index 12e6883ca88..8416bb2151d 100644 --- a/services/cannon/stack.yaml +++ b/services/cannon/stack.yaml @@ -16,5 +16,6 @@ extra-deps: - data-timeout-0.3 - text-latin1-0.3 - text-printer-0.5 +- websockets-0.11.1.0 extra-package-dbs: []