Ich werde meine eigene Frage beantworten. Websockets ermöglichen bidirektionale Kommunikationsmechanismen, ob zwischen einem Client-Browser und Webserver oder einer Server-zu-Server-Kommunikation.
Es gibt viele Anleitungen zum Herstellen dieser Verbindung zwischen dem Clientbrowser und dem Webserver, aber nur eine sehr begrenzte Dokumentation zur Interaktion zwischen zwei Servern.
Wenn man Django Kanäle eingerichtet hat und hören eingehende Verbindungen heißt auf 127.0.0.1:8001
So Ihre consumers.py würde einen Code wie ws_message wo Sie Ihre Route für alle eingehenden Nachrichten. Es würde einfach aussprechen, was es an das Terminal empfängt.
from channels import Group
def ws_message(message):
print(message.content['text'])
Group('chat').send({
'text': 'user %s' % message.content['text'],
})
Dann, wenn Sie eine Verbindung von Ihrem anderen Server (vielleicht ein Mikrocontroller Übertragen von Daten) der folgende Code schaffen wollen, werden Daten an die angegebene Adresse von 127.0.0.1:8001 senden. Bitte beachten Sie, dass Sie websocket Paket für Python benötigen für sicher sein
pip install websocket
server-socket.py
import websocket
import _thread as thread
import time
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print('Closed Connection')
def on_open(ws):
def run(*args):
for i in range(100):
time.sleep(1)
ws.send("%d" % i)
time.sleep(1)
ws.close()
print ("thread terminating...")
thread.start_new_thread(run,())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://127.0.0.1:8001",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
Es ist ziemlich einfach zu tun. Es sendet Zahlen im Bereich von 0-99 an den verbundenen Websocket.
Ja. Kanäle sind die besten Optionen für diesen Zweck. Auch diese Frage ist off-topic, weil Sie keinen Kabeljau bereitgestellt haben .... –
Vielen Dank für Ihre Antwort Raja. Die Frage ist nicht Code-bezogen, sondern methodisch, daher gibt es keinen Code. –