FME Flow:2025.1

Protocole de messagerie du serveur WebSocket

Ouverture, envoi et fermeture des messages

Le serveur WebSocket doit ouvrir les messages avant de les envoyer. Pour ouvrir les messages, le schéma suivant est utilisé :

NoteJSON est utilisé pour tous les messages

{

"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.

Obtenir des informations sur les canaux WebSocket ouverts

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>"

},

<...>

{

]

}