Wymagania wstępne
Przed ćwiczeniem skryptu pokazanego w tym samouczku należy wykonać następujące zadania.
Skonfiguruj aplikację Django
Uruchom następujące polecenie, aby utworzyć aplikację Django o nazwie SocketApp:
$ Python3 Zarządzaj.Py startApp SocketAppUruchom następujące polecenie, aby zainstalować kanał:
Kanały instalacyjne $ PIPDodaj kanały i nazwę aplikacji do Zainstalowany_app część Ustawienia.py plik:
Instalowane_apps = [Zdefiniuj wartość ASGI_APPLICACJA W Ustawienia.py plik:
Asgi_application = 'channel_pro.Asgi.aplikacja'Utwórz folder o nazwie szablony w środku SocketApp folder i ustaw lokalizację szablonu aplikacji w Szablony część Ustawienia.py plik:
Szablony = [Następujące dane wyjściowe pojawią się w terminalu po uruchomieniu serwera Django. Dane wyjściowe pokazuje, że ASGI/kanały wersja 3.0.3 działa.
Utwórz plik szablonu o nazwie indeks.html w określonej lokalizacji szablonu, aby wyświetlić dane wysyłane przez WebSocket. Obiekt gniazda, który jest tworzony za pomocą JavaScript, odczytuje dane za pomocą JSON.metoda parse (), a następnie przekazuj wartość do zawartości
indeks.html
Zmodyfikuj wyświetlenia.py plik SocketApp z następującą treścią. indeks.html plik szablonu zostanie wyświetlony w przeglądarce z tekst zmienna, gdy indeks() Metoda tego skryptu jest wywoływana z URL.py plik. Jeśli z gniazda nie jest przesyłana żadna wiadomość, to tekst 'Linuxhint'będzie wyświetlany w przeglądarce.
wyświetlenia.py
# Importuj moduł renderowania z DjangoZmodyfikuj URL.py plik SocketApp z następującą treścią. Dwie ścieżki są zdefiniowane w skrypcie: 'Admin/„Ścieżka służy do otwarcia pulpitu administracyjnego Django i”MSG/„Ścieżka służy do odczytania wiadomości WebSocket.
URL.py
z Django.Administrator importuPo wykonaniu następującego adresu URL bez definiowania plików konsumenta i routingu, protokół HTTP będzie działał i pojawi się następujące dane wyjściowe.
http: // localhost: 8000/msg
Teraz stwórz konsumenci.py plik wewnątrz SocketApp folder z następującym skryptem. łączyć() metoda WS_Consumer będzie używane do przyjęcia połączenia gniazda, odczytania bieżącej wartości czasu co sekundę i wysyłania bieżącego czasu w formacie JSON za pośrednictwem WebSocket, gdy ta metoda zostanie wywołana z pliku routingu.
konsumenci.py
# Importuj moduł JSONUtwórz rozgromienie.py w środku SocketApp folder z następującym skryptem. ''MSG/„Ścieżka jest zdefiniowana w skrypcie, aby zadzwonić do konsumenta w celu wysyłania danych do gniazda.
rozgromienie.py
z Django.URL ścieżki importuZmodyfikuj Asgi.py Plik z następującym skryptem. Moduły wymagane do obsługi żądań HTTP i WebSocket są importowane do skryptu.
Asgi.py
# Importuj moduł OSTeraz uruchom następujący adres URL z przeglądarki, aby odczytać dane z WebSocket.
http: // localhost: 8000/msg/
Jeśli konsument i router działają poprawnie, w przeglądarce zostanie wyświetlony następujący zegar cyfrowy. Tutaj router wysłał żądanie WebSocket za pomocą 'MSG/„Ścieżka do konsumenta, który zaakceptował żądanie i wysłał dane do szablonu, aby pokazać zegar cyfrowy w przeglądarce, w której druga wartość bieżącego czasu aktualizuje się co sekundę.
Wniosek
Ten samouczek pokazał, jak wdrożyć aplikację w czasie rzeczywistym za pomocą Django Framework i kanałów, tworząc prosty zegar cyfrowy. Inne rodzaje aplikacji w czasie rzeczywistym można również zaimplementować za pomocą Django i kanałów, takich jak systemy czatu online. Skrypty użyte w tym samouczku działają tylko dla wersji Django 3+ i kanałów 3+. Tak więc, jeśli używasz wcześniejszej wersji Django lub kanału, musisz zaktualizować wersję przed przetestowaniem skryptu podanego w tym samouczku.