Classe générale pour les websockets #508

Merged
lstephan merged 0 commits from Aufinal/websockets into master 2017-03-31 23:40:05 +02:00
lstephan commented 2017-03-31 17:27:09 +02:00 (Migrated from git.eleves.ens.fr)

Rajoute une classe Websocket pour gérer la création de ws génériques.

Crée une instance OperationWebSocket pour remplacer celui de kpsul.html.

Rajoute une classe `Websocket` pour gérer la création de ws génériques. Crée une instance `OperationWebSocket` pour remplacer celui de `kpsul.html`.
delobell commented 2017-03-31 20:01:55 +02:00 (Migrated from git.eleves.ens.fr)

Tu peux créer une "méthode" get url qui donne l'url absolue avec cette "logique"

Tu peux créer une "méthode" `get url` qui donne l'url absolue avec cette "logique"
lstephan commented 2017-03-31 20:10:50 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 413df080 - Add url get method [Compare with previous version](https://git.eleves.ens.fr/cof-geek/gestioCOF/merge_requests/204/diffs?diff_id=306&start_sha=499c08156577f2e94894d8e9dbfab242d42062c1)
delobell commented 2017-03-31 20:43:41 +02:00 (Migrated from git.eleves.ens.fr)

Je pense que c'est pas mal d'ajouter à l'objet (this) le ws pour pouvoir être utilisé/modifié/whatever ultérieurement, si jamais...

Je pense que c'est pas mal d'ajouter à l'objet (`this`) le ws pour pouvoir être utilisé/modifié/whatever ultérieurement, si jamais...
lstephan commented 2017-03-31 20:45:24 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 8bf1bd53 - Websocket as member [Compare with previous version](https://git.eleves.ens.fr/cof-geek/gestioCOF/merge_requests/204/diffs?diff_id=307&start_sha=413df0806dd170f82c6b33b46179160b7572bfc5)
delobell commented 2017-03-31 20:55:34 +02:00 (Migrated from git.eleves.ens.fr)

L'interface de base s'appelant WebSocket, ça serait bien de lui trouver un autre nom moins proche

L'interface de base s'appelant `WebSocket`, ça serait bien de lui trouver un autre nom moins proche
lstephan commented 2017-03-31 20:58:45 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 38bfccf3 - Change class name [Compare with previous version](https://git.eleves.ens.fr/cof-geek/gestioCOF/merge_requests/204/diffs?diff_id=308&start_sha=8bf1bd53439919d2792bd82eabc7aef7a9d33e71)
delobell commented 2017-03-31 21:07:40 +02:00 (Migrated from git.eleves.ens.fr)

Cette implém fait que plusieurs connexions sont nécessaires pour une seule url, puisque pour chaque callback il faut un nouvel objet Websocket.

Est-ce que ça serait pas mieux d'avoir un constructeur qui prend l'URL relative en argument qui l'ajoute à l'objet et qui initialise un tableau de callbacks qui seront appelé lors d'un event onmessage. Il faut aussi une méthode add_handler pour ajouter un callback. Une méthode qui ouvre le WS (pour ne pas l'ouvrir dans le constructeur et donc pré-déclarer des WS pour les URLs canoniques (comme k-psul)) et qui place onmessage comme appelant les callbacks de this.handlers. Cette méthode est appelée pour créer et connecter le ws si ce n'est pas encore fait lors de l'appel à add_handler (histoire de pas avoir à le faire "manuellement").

Cette implém fait que plusieurs connexions sont nécessaires pour une seule url, puisque pour chaque callback il faut un nouvel objet Websocket. Est-ce que ça serait pas mieux d'avoir un constructeur qui prend l'URL relative en argument qui l'ajoute à l'objet et qui initialise un tableau de callbacks qui seront appelé lors d'un event `onmessage`. Il faut aussi une méthode `add_handler` pour ajouter un callback. Une méthode qui ouvre le WS (pour ne pas l'ouvrir dans le constructeur et donc pré-déclarer des WS pour les URLs canoniques (comme k-psul)) et qui place `onmessage` comme appelant les callbacks de `this.handlers`. Cette méthode est appelée pour créer et connecter le ws si ce n'est pas encore fait lors de l'appel à `add_handler` (histoire de pas avoir à le faire "manuellement").
lstephan commented 2017-03-31 22:01:54 +02:00 (Migrated from git.eleves.ens.fr)

Du coup, tu verrais add_handler comme un simple ajout au tableau this.handlers ou comme un ajout direct au socket ?

Sinon, j'avais aussi pensé à un dictionnaire de handlers avec chacun sa spécifité, et de mettre dans le onmessage (par ex) this.handlers['toto'](data['toto']) pour chaque type de data.

Du coup, tu verrais `add_handler` comme un simple ajout au tableau `this.handlers` ou comme un ajout direct au socket ? Sinon, j'avais aussi pensé à un dictionnaire de handlers avec chacun sa spécifité, et de mettre dans le `onmessage` (par ex) `this.handlers['toto'](data['toto'])` pour chaque type de data.
delobell commented 2017-03-31 22:27:47 +02:00 (Migrated from git.eleves.ens.fr)

Y'a qqch pour ajouter des handlers au ws ? Je connais que onmessage qui a l'air d'être une fonction appelée sur réception d'un message et c'est tout. Donc si tu veux enregistrer plusieurs handlers, faut le faire de notre côté (avec this.handlers par exemple).

Pour ce que tu proposes, pourquoi pas ouais mais je pense pas qu'on gagne beaucoup à l'utilisation, par contre cette classe sera plus longue (faut prévoir les callbacks "typés" mais aussi généraux). Cela dit, ça permettrait d'enlever default_msg.

Y'a qqch pour ajouter des handlers au ws ? Je connais que `onmessage` qui a l'air d'être une fonction appelée sur réception d'un message et c'est tout. Donc si tu veux enregistrer plusieurs handlers, faut le faire de notre côté (avec `this.handlers` par exemple). Pour ce que tu proposes, pourquoi pas ouais mais je pense pas qu'on gagne beaucoup à l'utilisation, par contre cette classe sera plus longue (faut prévoir les callbacks "typés" mais aussi généraux). Cela dit, ça permettrait d'enlever `default_msg`.
lstephan commented 2017-03-31 22:37:50 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * ab15dbae - Add handler management [Compare with previous version](https://git.eleves.ens.fr/cof-geek/gestioCOF/merge_requests/204/diffs?diff_id=309&start_sha=38bfccf3313abb84447c91a17180c7f7abd6779c)
delobell commented 2017-03-31 22:54:03 +02:00 (Migrated from git.eleves.ens.fr)

resolved all discussions

resolved all discussions
delobell commented 2017-03-31 23:40:05 +02:00 (Migrated from git.eleves.ens.fr)

merged

merged
delobell commented 2017-03-31 23:40:05 +02:00 (Migrated from git.eleves.ens.fr)

mentioned in commit fafa7e536e

mentioned in commit fafa7e536e89e455019589d30ee401418728e909
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DGNum/gestioCOF#508
No description provided.