-spec event_name_binary(atom() | binary()) -> {ok, binary()} | {error, atom()}.
-spec init(map()) -> {ok, map()}.
-spec is_event_name_char(term()) -> boolean().
-spec origin_allowed(binary() | undefined) -> boolean().
-spec reserved_event_names() -> [binary()].
-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, [{text, binary()}], map()} | {reply, {close, non_neg_integer(), binary()}, map()} | {stop, map()}.
-spec websocket_init(map()) -> {ok, map()} | {reply, {close, 1008, binary()}, map()}.