it-swarm.com.de

RESTful HTTP und Websocket in derselben Anwendung?

Wenn eine Anwendung bereits ein geöffnetes WebSocket für Live-Feeds hat, sollte ich es über AJAX für die andere Kommunikation mit dem Server verwenden?

Da die Verbindung bereits geöffnet ist, sollten wir sie für Anforderungen verwenden, die Request/Response und nicht in Echtzeit?

Ich bevorzuge RESTful HTTP Anfragen, weil ich finde, dass sie einfacher zu debuggen sind. Sie können einen Browser mit URLs oder Curls verwenden, um zu testen, was die API zurückgibt. Sie müssen keinen Code schreiben, um ein WebSocket zu öffnen.

Wäre es komisch, RESTful HTTP API und ein WebSocket in derselben Anwendung?

18
Marc

Eines der zentralen Entwurfsziele von Websockets besteht darin, dass sowohl HTTP- als auch Websocket-Protokolle über denselben Port übertragen werden können. Dies wird erreicht, indem ein Client explizit aufgefordert wird, einen Websocket-Handshake mit einer HTTP-Upgrade-Anforderung durchzuführen. Auf diese Weise kann der Server eine Standard-HTTP-Anforderungsverbindung sowie eine HTTP-Upgrade-Anforderung verarbeiten, die jetzt auf eine dauerhafte bidirektionale Duplexverbindung aktualisiert wird.

Ja, dies ist definitiv ein gültiger Anwendungsfall. Ob Sie dies jedoch für Ihre spezifische Anwendung tun SOLLTEN, ist eine völlig andere Sache. Websockets sind nützlich und sinnvoll, wenn Sie Szenarien haben, in denen der Server in der Lage sein muss, unerwünschte Daten an den Client zu senden (Live-Feeds). Das HTTP-Protokoll und die Dienste REST) sind nützlich, wenn Sie die synchrone Client-Abfrage von Daten blockieren möchten.

Wenn Ihre Anforderungen so sind, dass beide für Ihre Anwendung sinnvoll sind, sollten Sie auf jeden Fall beide verwenden. Wenn Ihre einzige Interaktion mit dem Server jedoch auf Live-Feeds basiert, sind REST -Dienste nicht geeignet. Ich denke, die Einfachheit des Debuggens sollte in Bezug auf eine eher geringe Bedeutung haben ) Systemqualitätsattribute , nach denen Sie Ihr Design entwerfen sollten.

15
maple_shaft