簡體   English   中英

通過 Dash 顯示 UDP package 的內容

[英]Display the contents of an UDP package via Dash

當在端口 xxxx 收到 udp 數據包時,我想動態更新 html div。 有人知道如何合並這兩個部分嗎?

通過合並代碼,我無法同時執行兩者,例如將從 udp 數據包接收到的值保存在變量中。

Html 代碼:

短跑

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

ERVER = socket.gethostbyname(socket.gethostname())
ADDR = (SERVER, PORT)
UDPClientSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)

app = dash.Dash(__name__)

app.layout = html.Div([
    html.H6("Value:"),
    html.Br(),
    html.Div(id='my-output'),

])

if __name__ == '__main__':
    app.run_server(debug=True)

Udp插座:

UDP

HEADER = 64
PORT = 4501
SERVER = socket.gethostbyname(socket.gethostname())
ADDR = (SERVER, PORT)
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = "!DISCONNECT"

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(ADDR)

def handle_client(conn, addr):
    print(f"[NEW CONNECTION] {addr} connected.")
    connected = True
    while connected:
            msg = conn.recv(1024)
            print(f"[{addr}] {msg}")
    conn.close()

def start():
    server.listen()
    while True:
        conn, addr = server.accept()
        thread = threading.Thread(target=handle_client, args=(conn, addr))
        thread.start()

start()

是的,您需要做一些事情才能開始:

  • 異步后台任務管理器(即 Celery,查看Celery 任務)。
  • 使用數據庫存儲和傳遞套接字的內容(例如,Celery 使用 Redis 或 RabbitMQ)。
  • 在 dcc.Interval object 中,查詢數據庫以獲取最新值並在 Dash 應用程序中顯示該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM