ws_deflate_commands_h.erl 734 B

123456789101112131415161718192021222324
  1. %% This module enables/disables compression
  2. %% every time it echoes a frame.
  3. -module(ws_deflate_commands_h).
  4. -behavior(cowboy_websocket).
  5. -export([init/2]).
  6. -export([websocket_handle/2]).
  7. -export([websocket_info/2]).
  8. init(Req, RunOrHibernate) ->
  9. {cowboy_websocket, Req,
  10. #{deflate => true, hibernate => RunOrHibernate},
  11. #{compress => true}}.
  12. websocket_handle(Frame, State=#{deflate := Deflate0, hibernate := run}) ->
  13. Deflate = not Deflate0,
  14. {[Frame, {deflate, Deflate}], State#{deflate => Deflate}};
  15. websocket_handle(Frame, State=#{deflate := Deflate0, hibernate := hibernate}) ->
  16. Deflate = not Deflate0,
  17. {[Frame, {deflate, Deflate}], State#{deflate => Deflate}, hibernate}.
  18. websocket_info(_Info, State) ->
  19. {[], State}.