Delen via


WebSocket-protocol en Application Gateway for Containers

WebSockets, die zijn ingesteld in RFC6455, maken communicatie in twee richtingen mogelijk tussen een client en server. In tegenstelling tot een traditionele HTTP- of HTTPS-aanvraag kan de browser een verbinding tot stand brengen en doorlopende gegevens van een server ontvangen, zonder dat de externe server voortdurend hoeft te worden opgehaald of meerdere verbindingen in beide richtingen moeten worden tot stand gebracht (client naar server en server naar client).

Voordelen van WebSocket

Het WebSocket-protocol heeft verschillende voordelen ten opzichte van traditionele HTTP-aanvragen, waaronder:

  • Browsercompatibiliteit: Bijna alle moderne webbrowsers ondersteunen WebSockets.
  • Realtime gegevens: WebSockets maken realtime gegevensoverdracht mogelijk tussen client en server.
  • Efficiëntie: WebSockets elimineren de noodzaak om continu poll-servers te controleren op updates.
  • Beveiliging: WebSockets kunnen worden versleuteld met TLS en standaard HTTP-poorten gebruiken, zoals 80 en 443.
  • Flexibiliteit: WebSockets kunnen worden gebruikt voor verschillende toepassingen, waaronder chat-, gaming- en financiële handelsplatforms.

Hoe het WebSocket-protocol werkt

Om een WebSocket-verbinding tot stand te brengen, wordt er een specifieke OP HTTP gebaseerde handshake uitgewisseld tussen de client en de server. Als dit lukt, wordt het protocol voor de toepassingslaag bijgewerkt van HTTP naar WebSockets, met behulp van de eerder tot stand gebrachte TCP-verbinding. Zodra dit gebeurt, wordt het protocol gewijzigd in WebSockets en loopt het verkeer niet meer via HTTP. Gegevens worden verzonden of ontvangen met behulp van het WebSocket-protocol door beide eindpunten totdat de WebSocket-verbinding is gesloten.

Diagram toont een client die communiceert met een webserver, verbinding maakt met HTTP, de verbinding met het WebSocket-protocol bijwerkt en de communicatie via het WebSocket-protocol voortzet.

Notitie

Nadat een verbinding is bijgewerkt naar WebSocket, als intermediaire/afsluitproxy, verzendt Application Gateway for Containers de gegevens die van de front-end naar de back-end zijn ontvangen en vice versa, zonder inspectie- of manipulatiemogelijkheden. Daarom zijn bewerkingen zoals herschrijven van headers, URL-herschrijven of overschrijven van hostnaam niet van toepassing na het tot stand brengen van een WebSocket-verbinding.

WebSocket-verbindingen zijn mogelijk in tekst zonder opmaak of versleuteld via TLS. Wanneer een verbinding tot stand is gebracht via tekst zonder opmaak, wordt de verbinding tot stand gebracht in de indeling van ws://< fqdn>/path. Wanneer een verbinding tot stand is gebracht via TLS, wordt de verbinding tot stand gebracht in de indeling van wss://< fqdn>/path.

Statuscontroles

Er is geen configuratie vereist om gebruik te maken van een WebSocket-aanvraag in Application Gateway for Containers, maar u moet ervoor zorgen dat u statustests correct configureert om ervoor te zorgen dat de back-end als in orde wordt weergegeven.

Application Gateway for Containers probeert standaard een HTTP-handshake te starten naar de back-endpoort waarop de WebSocket-service wordt uitgevoerd. In veel gevallen wordt de back-end onjuist gelabeld als beschadigd. Daarom moet er een HealthCheckPolicy worden gedefinieerd om ervoor te zorgen dat de statustest het gebruik van een TCP-test beschouwt.

Hier volgt een voorbeeld van een HealthCheckPolicy voor een WebSocket-back-end.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
  name: websockets-health-check-policy
  namespace: test-infra
spec:
  targetRef:
    group: ""
    kind: Service
    name: websockets-backend
    namespace: test-infra
  default:
    interval: 5s
    timeout: 3s
    healthyThreshold: 1
    unhealthyThreshold: 1
    http:
      path: /health 
EOF

Notitie

WebSockets worden alleen ondersteund bij het gebruik van gateway-API voor Application Gateway for Containers.

Metrische gegevens en bewaking

Diagnostische logboeken:

WebSocket-verbindingen werken met behulp van een afzonderlijk protocol. Bij het initiëren van de verbinding ontvangt de browser een HTTP 101-statuscode, die de switch van HTTP naar WebSocket aangeeft en wordt weergegeven in het toegangslogboek.

De details van de WebSocket-verbinding worden alleen vastgelegd wanneer de verbinding wordt gesloten. Hierdoor kan de duur van elke verbinding nauwkeurig worden gemeten.

Volgende stappen

Meer informatie over WebSockets en Gateway-API