Endpoint /websocket
¶
Configuration¶
Ewt supporte les WebSockets. Ils ne sont cependant activés qu'à la condition où le path de l'endpoint est défini. Pour ce faire, il existe deux solutions:
-
Définir le path de l'endpoint au niveau du fichier
web.xml
à l'aide du paramètre de contextewebsocket-endpoint-path
. Cela se fait par exemple de la façon suivante (voir lignes en surbrillance):1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <!-- Initialisation --> <context-param> <param-name>application-root-path</param-name> <param-value>${env:EWT_APPLICATION_ROOT_PATH}</param-value> </context-param> <context-param> <param-name>websocket-endpoint-path</param-name> <param-value>/websocket</param-value> </context-param> <listener> <listener-class>ch.epilogic.ewt.core.EwtServletContextListener</listener-class> </listener> ...
Attention, l'endpoint WebSocket n'est pas un servlet et ne doit pas être déclaré comme les autres servlets. En réalité l'endpoint est créé par Ewt à l'initialisation du moteur.
-
Définir le path de l'endpoint via la propriété
websocket-endpoint-path
dans le fichier bootstrap d'Ewt.Dans le cas où la propriété est définie à la fois au niveau du
web.xml
et du fichier bootstrap, c'est la valeur de ce dernier qui prime.
Utilisation¶
Une URL de websocket peut prendre l'une des formes suivantes:
ws://host:port/ewt/websocket/application/script/session
ws://host:port/ewt/websocket/application/script/session/context
Les équivalents utilisant le scheme wss://
sont également disponibles,
sous réserve que le serveur d'application soit correctement configuré.
La partie application
attend le nom de l'application.
La partie script
attend le nom du script qui prendra en charge les
messages envoyés par le WebSocket.
La partie session
attend l'identifiant de session que l'on retrouve dans
l'arbre de sortie du moteur sous /output/session/@id
. Cet élément est
nécessaire pour identifier le sujet (utilisateur) et vérifier les
autorisations.
La partie context
attend l'identifiant de contexte que l'on retrouve dans
l'arbre de sortie du moteur sous /output/documents/document/@context
. Cet
élément est optionnel. Il permet de lier les sessions WebSocket à un dossier en
particulier.
L'ensemble des éléments application
, script
et context
constituent un canal. Toutes les sessions qui se connectent à un même canal
sont en quelque sorte liées. Par exemple dans le cas d'un chat, on peut
voir le canal comme un groupe de discussion.
Exemple¶
Un exemple d'implémentation simple sous la forme d'un forum de discussion est donné dans la leçon websocket.