FME Flow:2025.1
Éditeur WebSocket
L'éditeur WebSocket reçoit des messages via TCP d'un client pris en charge par WebSocket et les publie surFME Flow sujets. Les clients pris en charge peuvent inclure le transformateur WebSocketConnector, ainsi que les navigateurs Web Java ou HTML5 suivants :
- Microsoft Edge
- Firefox 11+
- Chrome 16+
- Safari 6+
- Opéra 12.10+
Canaux de communication WebSocket
LeServeur WebSocket est situé sur leFME Flow Cœur. Par défaut,FME Flow utilise les canaux suivants pour la communication WebSocket :
- Port : 7078
- URI :ws://<nom d'hôte>:7078/websocket
Pour configurer le serveur WebSocket pour la communication SSL, voirConfiguration pour HTTPS.
Configuration de l'éditeur
- In the FME Flow Web User Interface, select Notifications > Publications, and click Create.
- Donnez un nom à la publication
- Dans le menu déroulant Protocole, sélectionnez WebSocket.
-
Précisez leThèmes vous souhaitez publier en utilisant le sélecteur déroulant. Pour créer un sujet et l'utiliser immédiatement, cliquez sur+.
- URL cible : ce champ est pré-rempli avec l’URL du serveur WebSocket sur leFME Flow Noyau (inclus avec votreFME Flow installation). Cependant, vous pouvez choisir de vous connecter à un autre serveur WebSocket.
- ID de flux : spécifiez l’ID de flux pour la publication. L'ID de flux permet au serveur WebSocket d'identifier les messages et de les connecter aux applications demandeuses. Dans ce cas, l'application demandeuse est l'éditeur de services de notification.
- Cliquez sur OK.
Protocole de messagerie
Le serveur WebSocket doit ouvrir les messages avant de les envoyer. Pour ouvrir les messages, le schéma suivant est utilisé :
{
"ws_op" : "ouvert",
"ws_stream_ids" : ["<streamid1>", "<streamid2>", "<streamid3>", ...]
}
Une fois qu'un message est ouvert, une connexion est établie, en utilisant l'ID de flux pour identifier le message. Le serveur WebSocket relaie ensuite les messages en utilisant ce schéma :
{
"ws_op" : "envoyer",
"ws_msg" : "msg"
}
Le serveur WebSocket prend en charge l’envoi de plusieurs messages après l’ouverture d’un flux.
Après l’envoi de messages, il est recommandé de demander au serveur WebSocket de fermer le flux de messages. Cependant, si un message n’est pas explicitement fermé, le serveur WebSocket le ferme automatiquement.
{
"ws_op": "fermer"
}
Attributs :
- ws_op: Définit l'opération WebSocket. Si vous souhaitez que le serveur WebSocket ouvre les messages, spécifiez"ouvrir". Pour envoyer des messages, spécifiez"envoyer". Pour fermer un flux de messages, spécifiez"fermer".
- ws_stream_ids: Identifie un ou plusieurs flux de messages afin que le serveur WebSocket puisse les associer à la source.
Par exemple, considérez la série de messages suivante provenant d’un client HTML5 vers votre serveur WebSocket :
{
"ws_op" : "ouvert",
"ws_stream_ids" : "send-stream",
}
{
"ws_op" : "envoyer",
"ws_msg" : "Bonjour tout le monde"
}
{
"ws_op" : "fermer"
}
Une fois que le serveur WebSocket a ouvert le flux de messages « send-stream », il est envoyé à tous les éditeurs créés sur ce flux. Le message « Hello World » est ensuite délivré à tous les sujets définis pour ces éditeurs. Le serveur WebSocket ferme ensuite le flux.
Vous pouvez envoyer des messages contenant des informations sur tous les canaux actuellement ouverts sur leFME Flow Serveur WebSocket. Ces informations peuvent être utiles pour administrer et dépanner les communications WebSocket.
Pour obtenir le nombre de canaux WebSocket ouverts, par ID de flux
{
"ws_op" : "admin",
"ws_msg" : "getnumchannels()"
}
Objet de réponse correspondant :
{
"numchannels" : "<nombre_de_canaux>",
"flux":[
{
"flux" : "message_stream_id",
"numchannels" : "<nombre_de_chaînes_ouvertes_sur_ce_flux>"
},
<...>
{
]
}
Pour obtenir des informations de connexion sur chaque canal WebSocket ouvert
{
"ws_op" : "admin",
"ws_msg" : "getchannelinfo()"
}
Objet de réponse correspondant :
{
"numchannels" : "<nombre_de_canaux>",
"canaux" :[
{
"port" : "<numéro_de_port_de_canal>",
"flux" : "message_stream_id",
"hôte" : "adresse_IP_de_l'hôte_du_canal",
"inscriptible" : "<canal_est_inscriptible_vrai_ou_faux>"
},
<...>
{
]
}