Priekšnoteikumi
Pirms praktizēt šajā apmācībā parādīto skriptu, noteikti veiciet šādus uzdevumus.
- Instalējiet Django versiju 3+ Ubuntu 20+ (vēlams)
- Izveidojiet Django projektu
- Palaidiet Django serveri, lai pārbaudītu, vai serveris darbojas pareizi
Iestatiet Django lietotni
Palaidiet šo komandu, lai izveidotu Django lietotni ar nosaukumu socketapp:
$ python3 pārvaldīt.py startapp socketappLai instalētu kanālu, izpildiet šo komandu:
$ pip instalēt kanālusPievienojiet kanālus un lietotnes nosaukumu INSTALLED_APP daļa no iestatījumi.py fails:
INSTALLED_APPS = […
'kanāli',
'socketapp'
]
Definējiet ASGI_APPLICATION vērtību sistēmā iestatījumi.py fails:
ASGI_APPLICATION = 'kanāla_pro.asgi.pieteikums ”Izveidojiet mapi ar nosaukumu veidnes iekšpusē socketapp mapē un iestatiet lietotnes veidnes atrašanās vietu mapē Veidnes daļa no iestatījumi.py fails:
PARAUGI = [… .
'DIRS': ['/ home / fahmida / channel_pro / socketapp / templates'],
… .
,
]
Pēc Django servera palaišanas terminālā parādīsies šāda izeja. Rezultāts parāda, ka ASGI / Channels 3. versija.0.3 darbojas.
Izveidojiet veidnes failu ar nosaukumu indekss.html definētajā veidnes vietā, lai parādītu WebSocket sūtītos datus. Socket objekts, kas izveidots, izmantojot JavaScript, nolasīs datus, izmantojot JSON.parsēt () metodi, pēc tam vērtību pārnest uz
tagu, kas satur ID vērtību, 'msg."
indekss.html
text
Mainīt skati.py datne socketapp ar šādu saturu. The indekss.html veidnes fails tiks parādīts pārlūkprogrammā ar tekstu mainīgs, kad rādītājs () Šī skripta metode tiek izsaukta no URL.py failu. Ja no kontaktligzdas netiek pārsūtīts neviens ziņojums, tekstsLinuxHint'tiks parādīts pārlūkprogrammā.
skati.py
# Importēt renderēšanas moduli no Djangono django.saīsnes importēt renderēšanu
# Izveidojiet indeksa funkciju, lai pārlūkprogrammā parādītu HTML failu
def indekss (pieprasījums):
atgriezt renderēšanu (pieprasījums, indekss.html ", context = 'text': 'LinuxHint')
Mainīt URL.py datne socketapp ar šādu saturu. Skriptā ir definēti divi ceļi:admin /'ceļš tiek izmantots, lai atvērtu Django administrācijas informācijas paneli, unziņa /'ceļš tiek izmantots, lai lasītu WebSocket ziņojumu.
URL.py
no django.ieguldījuma importēšanas administratorsno django.URL importēšanas ceļš
no socketapp importēšanas skatiem
urlpatterns = [
ceļš ('admin /', admin.vietne.URL),
ceļš ('msg /', skati.indekss)
]
Kad šis URL tiek izpildīts, nenosakot patērētāja un maršrutēšanas failus, HTTP protokols darbosies un parādīsies šāda izeja.
http: // localhost: 8000 / msg
Tagad izveidojiet patērētājiem.py failu iekšpusē socketapp mapi ar šādu skriptu. The savienot () metode ws_patērētājs tiks izmantots, lai pieņemtu kontaktligzdas savienojumu, katru sekundi nolasītu pašreizējo laika vērtību un nosūtītu pašreizējo laiku JSON formātā, izmantojot WebSocket, kad šī metode tiek izsaukta no maršrutēšanas faila.
patērētājiem.py
# Importējiet JSON moduliimporta json
# Importēt WebsocketConsumer
no kanāliem.vispārējs.importēt Websocket WebsocketConsumer
# Datuma laika moduļa importēšana
no datetime importa datetime
# Importēt miega moduli
no laika importa miegs
# Definējiet patērētāju klasi, lai datus nosūtītu, izmantojot WebsocketConsumer
klase ws_consumer (WebsocketConsumer):
def savienojums (pats):
pats.pieņemt ()
kamēr (True):
tagad = datuma laiks.tagad ()
pats.sūtīt (json.izgāztuves ('timeValue': tagad.strftime ("% H:% M:% S"))
gulēt (1)
Izveidojiet maršrutēšana.py iekšpusē socketapp mapi ar šādu skriptu. The 'ziņa /'skripts ir noteikts ceļš, lai piezvanītu patērētājam par datu nosūtīšanu kontaktligzdā.
maršrutēšana.py
no django.URL importēšanas ceļšno .patērētāji importē ws_consumer
# Iestatiet ceļu, lai piezvanītu patērētājam
ws_urlpatterns = [
ceļš ('msg /', ws_patērētājs.as_asgi ())
]
Mainīt asgi.py failu ar šādu skriptu. Moduļi, kas nepieciešami, lai apstrādātu HTTP un WebSocket pieprasījumus, tiek importēti skriptā.
asgi.py
# Importēt moduliimportēt os
# Importējiet get_asgi_application, lai apstrādātu http protokolu
no django.kodols.asgi importēt get_asgi_application
# Importējiet ProtocolTypeRouter un URLRouter, lai iestatītu tīmekļa ligzdas maršrutēšanu
no kanāliem.maršrutēšanas importēšana ProtocolTypeRouter, URLRouter
# Importējiet AuthMiddlewareStack, lai apstrādātu tīmekļa vietni
no kanāliem.Autent importēt AuthMiddlewareStack
# Importējiet tīmekļa ligzdas maršrutēšanu
no socketapp.maršrutēšanas importēšana ws_urlpatterns
# Piešķirt vērtību DJANGO_SETTINGS_MODULE
os.vide.setdefault ('DJANGO_SETTINGS_MODULE', 'channel_pro.iestatījumi')
# Definējiet lietojumprogrammas mainīgo, lai apstrādātu http un tīmekļa vietni
application = ProtocolTypeRouter (
'http': get_asgi_application (),
'websocket': AuthMiddlewareStack (URLRouter (ws_urlpatterns))
)
Tagad vēlreiz palaidiet šo URL no pārlūka, lai nolasītu datus no WebSocket.
http: // localhost: 8000 / msg /
Ja patērētājs un maršrutētājs darbojas pareizi, pārlūkprogrammā tiks parādīts šāds digitālais pulkstenis. Šeit maršrutētājs ir nosūtījis WebSocket pieprasījumu, izmantojot 'ziņa /ceļš pie patērētāja, kurš ir pieņēmis pieprasījumu un nosūtījis datus uz veidni, lai pārlūkprogrammā parādītu digitālo pulksteni, kur katra sekunde tiek atjaunināta pašreizējā laika otrā vērtība.
Secinājums
Šī apmācība parādīja, kā īstenot reāllaika lietojumprogrammu, izmantojot Django ietvaru un kanālus, izveidojot vienkāršu digitālo pulksteni. Citus reāllaika lietojumprogrammu veidus var arī ieviest, izmantojot Django un kanālus, piemēram, tiešsaistes tērzēšanas sistēmas. Šajā apmācībā izmantotie skripti darbojas tikai Django versijās 3+ un Channel versijās 3+. Tātad, ja izmantojat vecāku Django vai Channel versiju, pirms šajā apmācībā sniegtā skripta testēšanas jums būs jāatjaunina versija.