Predpoklady
Pred precvičením skriptu zobrazeného v tomto návode si nezabudnite splniť nasledujúce úlohy.
- Nainštalujte Django verzie 3+ na Ubuntu 20+ (najlepšie)
- Vytvorte projekt Django
- Spustením servera Django skontrolujte, či server pracuje správne
Nastaviť aplikáciu Django
Spustením nasledujúceho príkazu vytvorte aplikáciu Django s názvom socketapp:
$ python3 spravovať.py startapp socketappSpustite nasledujúci príkaz na inštaláciu kanála:
$ pip inštalačné kanályPridajte kanály a názov aplikácie do priečinka INSTALLED_APP časť nastavenie.py spis:
INSTALLED_APPS = […
„kanály“,
'socketapp'
]
Definujte hodnotu ASGI_APPLICATION v nastavenie.py spis:
ASGI_APPLICATION = 'channel_pro.asgi.žiadosť 'Vytvorte priečinok s názvom šablóny vnútri socketapp priečinok a nastavte umiestnenie šablóny aplikácie v priečinku ŠABLÓNY časť nastavenie.py spis:
TEMPLATES = [… .
'DIRS': ['/ home / fahmida / channel_pro / socketapp / templates'],
… .
,
]
Po spustení servera Django sa v termináli objaví nasledujúci výstup. Výstup ukazuje, že ASGI / kanály verzie 3.0.3 beží.
Vytvorte súbor šablóny s názvom index.html v definovanom umiestnení šablóny na zobrazenie údajov odoslaných WebSocketom. Objekt socket, ktorý je vytvorený pomocou JavaScriptu, načíta údaje pomocou JSON.metódou parse (), potom odovzdajte hodnotu do obsahu súboru
značka, ktorá obsahuje hodnotu ID, msg.„
index.html
text
Upravte názory.py súbor socketapp s nasledujúcim obsahom. The index.html súbor šablóny sa zobrazí v prehľadávači s text premenná, keď index () metóda tohto skriptu sa volá z adresy URL.py spis. Ak sa zo soketu neprenáša žiadna správa, zobrazí sa text „LinuxHintsa zobrazí v prehliadači.
názory.py
# Import modulu vykreslenia z Djangaod djanga.skratky importovať vykreslenie
# Vytvorte funkciu indexu na zobrazenie súboru HTML v prehliadači
def index (požiadavka):
návratové vykreslenie (požiadavka, "index.html ", context = 'text': 'LinuxHint')
Upravte adresy URL.py súbor socketapp s nasledujúcim obsahom. V skripte sú definované dve cesty: znak „admin /„cesta sa používa na otvorenie Django Administration Dashboard a“správa /cesta sa používa na čítanie správy WebSocket.
adresy URL.py
od djanga.sk prispieť importod djanga.cesta importu adries URL
zo zobrazení importu socketapp
urlpatterns = [
cesta ('admin /', admin.stránky.adresy URL),
cesta ('msg /', zobrazenia.index)
]
Keď sa vykoná nasledujúca adresa URL bez definovania súborov spotrebiteľa a smerovania, protokol HTTP bude fungovať a zobrazí sa nasledujúci výstup.
http: // localhost: 8000 / správa
Teraz vytvorte spotrebiteľov.py súbor vo vnútri socketapp priečinok s nasledujúcim skriptom. The pripojiť () metóda ws_consumer použije sa na akceptovanie soketového pripojenia, na čítanie aktuálnej hodnoty času každú sekundu a na odoslanie aktuálneho času vo formáte JSON cez WebSocket, keď je táto metóda volaná zo smerovacieho súboru.
spotrebiteľov.py
# Importovať modul JSONimport json
# Import WebsocketConsumer
z kanálov.druhové.import websocket
# Importovať modul datetime
od
# Importovať modul spánku
od času import spánku
# Definujte triedu spotrebiteľa na odosielanie údajov prostredníctvom WebsocketConsumer
trieda ws_consumer (WebsocketConsumer):
def connect (self):
ja.súhlasiť()
while (True):
teraz = dátum a čas.teraz ()
ja.poslať (json.skládky ('timeValue': teraz.strftime ("% H:% M:% S")))
spánok (1)
Vytvorte smerovanie.py vnútri socketapp priečinok s nasledujúcim skriptom. „správa /„cesta je definovaná v skripte na volanie spotrebiteľa na odoslanie údajov do soketu.
smerovanie.py
od djanga.cesta importu adries URLod .spotrebitelia importuju ws_consumer
# Nastavte cestu, ako zavolať spotrebiteľovi
ws_urlpatterns = [
cesta ('msg /', ws_consumer.as_asgi ())
]
Upravte asgi.py súbor s nasledujúcim skriptom. Moduly, ktoré sú potrebné na spracovanie požiadaviek HTTP a WebSocket, sa importujú do skriptu.
asgi.py
# Import os moduluimport os
# Import get_asgi_application na spracovanie protokolu HTTP
od djanga.jadro.asgi import get_asgi_application
# Import ProtocolTypeRouter a URLRouter na nastavenie smerovania websocket
z kanálov.smerovanie import ProtocolTypeRouter, URLRouter
# Importujte AuthMiddlewareStack na spracovanie websocket
z kanálov.auth import AuthMiddlewareStack
# Import smerovania websocket
z socketapp.smerovanie import ws_urlpatterns
# Priradiť hodnotu pre DJANGO_SETTINGS_MODULE
os.environment.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.nastavenie')
# Definujte premennú aplikácie na spracovanie protokolu http a websocket
application = ProtocolTypeRouter (
'http': get_asgi_application (),
„websocket“: AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)
Teraz z prehliadača znova spustite nasledujúcu adresu URL, aby ste mohli načítať údaje z WebSocket.
http: // localhost: 8000 / správa /
Ak spotrebiteľ a smerovač pracujú správne, v prehliadači sa zobrazia nasledujúce digitálne hodiny. Tu smerovač odoslal požiadavku WebSocket pomocou znaku „správa /„cesta k spotrebiteľovi, ktorý prijal žiadosť a poslal údaje do šablóny, aby v prehliadači ukázal digitálne hodiny, kde sa druhá hodnota aktuálneho času aktualizuje každú sekundu.
Záver
Tento výukový program vám ukázal, ako implementovať aplikáciu v reálnom čase pomocou rámca a kanálov Django vytvorením jednoduchých digitálnych hodín. Iné typy aplikácií v reálnom čase je možné implementovať aj pomocou Django a kanálov, ako sú napríklad online chatovacie systémy. Skripty použité v tomto výučbe fungujú iba pre verzie Django verzie 3+ a verzie kanála 3+. Ak teda používate staršiu verziu Django alebo Channel, budete musieť verziu pred testovaním skriptu uvedeného v tomto návode inovovať.