-spec init(map()) -> {ok, map()}.
-spec terminate(term(), term(), map()) -> ok.
-spec websocket_handle({text | binary, binary()}, map()) -> {ok, map()} | {reply, {text, binary()}, map()}.
-spec websocket_info(term(), map()) -> {ok, map()} | {reply, {text, binary()}, map()} | {reply, {close, non_neg_integer(), binary()}, map()} | {stop, map()}.
-spec websocket_init(map()) -> {ok, map()} | {reply, {close, 1008, binary()}, map()}.