Я отвечу на свой вопрос. Веб-сокеты обеспечивают двунаправленные механизмы связи между браузером клиента и веб-сервером или связью между серверами.
Существует множество руководств по установке этого соединения между браузером клиента и веб-сервером, но очень мало документации о том, как взаимодействовать между двумя серверами.
Если кто-то настроил каналы Django и прослушивает входящие соединения, то есть на 127.0.0.1:8001
Таким образом, ваш Consumer.py будет иметь такой код, как ws_message, где будет указан ваш маршрут для любых входящих сообщений. Он просто отобразил бы то, что он получает, на терминал.
from channels import Group
def ws_message(message):
print(message.content['text'])
Group('chat').send({
'text': 'user %s' % message.content['text'],
})
Затем, если вы хотите установить соединение с другого вашего сервера (возможно, с микроконтроллера, передающего данные), следующий код отправит данные на указанный адрес 127.0.0.1:8001. Обратите внимание, что вам понадобится пакет websocket для python, чтобы обязательно сделать
pip install websocket
сервер-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()
Это довольно просто. Он отправляет числа в диапазоне 0-99 на подключенный веб-сокет.
person
IVI
schedule
31.05.2017