Получите ссылку на соединение Websocket в Cowboy

Я следую этому примеру. Я немного изменил свой ws_handler, добавив "websocket_handle ({text, ‹(" h ">>}, State) -> {reply, {text, ‹******************************************************************

чтобы подтвердить, что я мог обнаружить определенные сообщения.

Я хочу отслеживать подключения к веб-сокетам. В https://ninenines.eu/docs/en/cowboy/1.0/guide/ws_handlers/ Я вижу объект Req, но не знаю, что искать, чтобы увидеть, что он содержит.

Я обнаружил, что этот взаимодействует между обработчиком http и обработчиком веб-сокета в Cowboy ; Однако я не понимаю смысла приведенного в качестве примера ответа.

https://github.com/ninenines/cowboy/tree/master/examples/websocket использует pkg_cowboy_commit = 1.0.4 в erlang.mk, я не нашел примера, использующего последнюю версию ковбоя 2.0.

Я хочу отслеживать подключения к веб-сокетам с помощью идентификатора или PID в списке, удалять ссылку при их отключении и т. Д. Я не вижу другого способа сделать это, кроме отправки первых байтов текста в каждом сообщении, являющемся идентификатором, и это кажется неправильным.

В отличие от socket.io, например, вы получаете socket.id - мне нужны такие же ссылки в Erlang.


person quantumpotato    schedule 29.09.2017    source источник


Ответы (1)


Я думаю о чем-то вроде создания процесса, который ссылается на состояние веб-сокета. Скоро

websocket_init(State) ->

Передайте состояние процессу и добавьте этот новый PID процесса в состояние веб-сокета.

затем в

websocket_handle({text, Msg}, State) ->

пользовательский {reply, Reply} может быть отправлен путем загрузки данных из PID, который связан с логикой пользовательского домена.

person quantumpotato    schedule 29.09.2017