Estoy buscando un marco (preferiblemente para Python o JavaScript) que me permita crear mis propios subprotocolos websocket y crear servidores y clientes que se comunicarán usándolos.
El subprotocolo con el que estoy tratando se basa en JSON y tiene solicitudes y respuestas específicas, y ya definí sus esquemas (esto no se puede modificar). Así que esperaba encontrar alguna herramienta en la que pudiera definir los esquemas y decirle al servidor y al cliente que los usen; de lo contrario, tendré que implementar websocket desde cero.
Probé Flask e incluso consideré cambiar su código fuente, pero no encontré nada relacionado con los subprotocolos en él. Supongo que está hecho para apegarse a las configuraciones predeterminadas en eso.
Lo mismo en el módulo integrado WebSocket de JS. Aparentemente (como leíaquí ), puede especificar subprotocolos en la conexión del cliente pero no definirlos .
También encontré este artículo que explica cómo implementar websocket desde cero y posiblemente incluir subprotocolos personalizados, pero esta solución es de lo que estoy huyendo, ya que no tengo la intención de reinventar la rueda aquí.
Por lo que vale, estoy compartiendo a continuación una parte del subprotocolo que tengo. Este es el esquema JSON completo para una solicitud específica enviada por el cliente. Los tengo para todas las solicitudes y respuestas que necesitaré, tanto del cliente como del servidor. Lamentablemente no puedo compartir todo:
{ "$schema": "http://json-schema.org/draft-06/schema#", "comment": "subprotocol_name", "type": "object", "properties": { "type": { "type": "string", "enum": [ "request" ] }, "kind": { "type": "string", "enum": [ "configuration" ] }, "sequenceNumber": { "$ref": "#/definitions/sequenceNumber" }, "payload": { } }, "required": [ "type", "kind", "sequenceNumber", "payload" ], "definitions": { "sequenceNumber": { "type": "integer", "minimum": 0, "maximum": 2147483647 } } }Si hay alguna solución a mi problema, me gustaría saber si esto sería suficiente para definir el subprotocolo.