web-dev-qa-db-fra.com

Existe-t-il un équivalent aux codes d'état HTTP pour les messages WebSockets?

Je développe une API WebSocket et je me demandais s'il y avait une norme ou une meilleure pratique pour répondre aux messages clients. Par exemple, si mon API n'attend que des numéros stricts mais reçoive un mot, quel est le meilleur moyen de répondre? Y a-t-il quelque chose d'analogue à une réponse 400? Inversement, y a-t-il quelque chose comme une réponse de 200 pour une entrée valide?

2
Justin Borromeo

Généralement, vous voulez que votre site Web reçoit et répondu aux messages JSON. Ceci permet de permettre une flexibilité maximale pour plus tard. L'ajout de nouveaux champs ne modifie pas les types sous-jacents attendus sur une extrémité ou l'autre.

Développer plus loin, vous voulez généralement toujours que la racine soit un objet, et non un tableau. En effet, les matrices peuvent être vides, et encore une fois, vous souhaitez fournir une base de référence pour l'entrée et la sortie qui permettent de changer à l'avenir.

Généralement, vous avez tendance à avoir un champ indicatif de statut. Nous parlons de codes de réponse de type HTTP, mais cela pourrait éventuellement être n'importe quel système de code d'état arbitraire souhaité.

Vous vous attendriez donc que si le message est "vert", que vous attendiez le message minimum suivant dans la réponse:

{
    "status":  200,
    "message": "GREEN"
}

Donc, sur la fin du récepteur, devriez-vous ne pas trouver de JSON valide ou si vous ne trouvez pas de champ de statut, c'est un drapeau rouge! Sinon, vérifiez le statut pour déterminer si l'opération était un succès. 200 ici, bien sûr, être le code http standard pour dire que tout s'est passé bien.

Ensuite, vous pouvez effectuer une sorte de logique en plus de cela, par exemple, si vous voyez l'état 200, vous devriez également trouver un champ appelé "Message". Encore une fois, le système est arbitraire, mais vous le configurez généralement de cette manière pour créer une base de référence pour passer des messages qui vous permettent d'établir une base de protocole de base pour la communication entre serveur et client.

4
Neil