2017-09-29 4 views
1

Je suis cet exemple. J'ai modifié mon ws_handler légèrement avec "websocket_handle ({text, < <" h ">>}, état) -> {réponse, {texte, " You h-in! ">>}, État}; "Obtenez une référence à la connexion Websocket dans Cowboy

pour confirmer que je pouvais détecter des messages spécifiques.

Je souhaite effectuer le suivi des connexions de socket Web. Dans https://ninenines.eu/docs/en/cowboy/1.0/guide/ws_handlers/, je vois qu'il y a un objet Req mais je ne suis pas sûr de ce qu'il faut chercher pour voir ce qu'il contient.

J'ai trouvé ceci communicating between http handler and websocket handler in Cowboy; Je ne comprends pas la signification de l'exemple de réponse.

https://github.com/ninenines/cowboy/tree/master/examples/websocket utilise pkg_cowboy_commit = 1.0.4 dans le erlang.mk, je n'ai pas trouvé d'exemple utilisant le dernier cowboy 2.0. Je veux suivre les connexions websocket via un ID ou un PID dans une liste, supprimer une référence quand ils se déconnectent, etc. Je ne vois aucun moyen de le faire en plus d'envoyer les premiers octets d'un texte sur chaque message étant l'ID et Cela semble faux.

En revanche socket.io, par exemple, vous obtenez socket.id - Je veux le même type de référence dans Erlang.

Répondre

0

Je pense à quelque chose comme la création d'un processus qui fait référence à l'état de socket Web. Ainsi, sur

websocket_init(State) ->

passer l'État à un processus, et d'ajouter que le nouveau PID du processus à l'état de l'websocket

puis dans

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

une coutume {reply, Reply} peut être envoyé en chargeant les données du PID qui est connecté à la logique de domaine personnalisée.