2016-10-20 10 views
7

Ich versuche, sie zum ersten Mal zu verwenden und frage mich, ob ich auf dem richtigen Weg bin.Django Kanäle und socket.io-Client

Hier sind meine Verständnisse,

socket.io ein Wrapper um websocket ist, und zurück zu suboptimalen Lösungen fällt, wenn websocket nicht verfügbar.

Django-Kanäle können auch Websocket sprechen. Ich versuche, Django Kanäle auf dem Server und socket.io-Client auf dem Client zu verwenden
(ich glaube, es django als Nachrichtenwarteschlange wie System konvertiert. Obwohl dieses Verständnis oder Mißverständnis diese Frage beeinflussen soll)

So .

socket.io hat api, die

socket.on(type, (payload)=> {})

Während Django Kanäle hat eine Form von

message.reply_channel.send({ "text": json })

wie

aussieht, ist der "Text" type von socket.on(type)?

Können Django-Kanäle und socket.io-client miteinander kommunizieren?

Antwort

1

Vom Socket.IO README:

Hinweis: Socket.IO ist kein WebSocket-Implementierung. Obwohl Socket.IO tatsächlich WebSocket als Transport verwendet, wenn möglich, fügt es einige Metadaten zu jedem Paket hinzu: den Pakettyp, den Namespace und die Ack-ID, wenn eine Nachrichtenbestätigung benötigt wird. Aus diesem Grund kann ein WebSocket-Client keine Verbindung zu einem Socket.IO-Server herstellen, und ein Socket.IO-Client kann auch keine Verbindung zu einem WebSocket-Server herstellen (z. B. ws: //echo.websocket.org). Bitte beachten Sie die Protokollspezifikation here.

Sie sollten also nicht erwarten, dass Kanäle direkt mit Socket.IO funktionieren. Global browser support for websockets is at 93%, die wahrscheinlich hoch genug ist, um die websocket API direkt zu verwenden.