Tworzenie komunikatora przy użyciu Pythona

Facebook Messenger Vs Telegram

Jeśli kiedykolwiek chciałeś stworzyć własny komunikator czatowy, ale nie byłeś pewien jak zacząć, ten artykuł Ci w tym pomoże. Omówimy metodę Unicast(), wątkowanie w obrębie czatu oraz funkcjonalność wielu czatów. Kiedy już będziesz się dobrze czuł z podstawami tego języka, możesz przejść do bardziej zaawansowanych tematów. Następnie przyjrzymy się bliżej metodom Unicast(), Simplex i Threading w pokoju rozmów.

Metoda Unicast()

Pisząc aplikację czatową, należy pamiętać, że istnieją dwa rodzaje komunikacji: broadcast i unicast. W trybie broadcast wiadomość jest nadawana do całego pokoju czatowego, natomiast w trybie unicast adresowana jest tylko do jednego klienta. Metoda Unicast() jest częściej używana, ponieważ jest bardziej wydajna i może obsłużyć więcej jednoczesnych połączeń. Aby lepiej zrozumieć tę metodę, przyjrzyjmy się prostej aplikacji czatowej.

Funkcja main() tworzy listę klientów i definiuje wszystkie parametry niezbędne dla serwera czatu. Używany adres IP jest adresem lokalnym (127.0.0.1), natomiast flaga SO_REUSEADDR nakazuje jądru ponowne użycie lokalnego gniazda, gdy znajduje się ono w stanie TIME_WAIT. W skrócie, próbujemy rozgłosić wiadomość do wszystkich klientów oprócz nadawcy. Ta metoda jest nieco bardziej skomplikowana, ale jest bardzo elastyczna.

Pełna ścieżka do SignalChat to http://localhost:8080/signalchat/. Jest on skonfigurowany do komunikacji międzydomenowej i posiada pojedynczą klasę huba z metodami do łączenia i rozłączania klientów. Klienci SignalChat używają tylko metody unicast() podczas wysyłania wiadomości. Klienci przechowują stan w Client.CallerState. Nazwa użytkownika jest dodawana do obiektu dynamicznego.

Jeśli Twoja aplikacja czatu musi połączyć się z serwerem w innej podsieci, możesz to zrobić, ustawiając statyczny punkt końcowy na serwerze. Ustawienie to można znaleźć w oknie Project Settings w sekcji UDP Messaging. Upewnij się tylko, że port 0 zastąpisz liczbą z zakresu 50000-60000. Jeśli użyjesz innego portu, będziesz musiał zmienić adres IP.

Nawlekanie w czacie

W czacie nawlekanie odnosi się do używania podprocesów zwanych wątkami. Każdy użytkownik ma swój własny wątek, a komunikacja odbywa się za pośrednictwem poszczególnych wątków i obiektów gniazd, które identyfikują każdego klienta. W poniższym przykładzie kodu użyto dwóch skryptów: jeden do skonfigurowania pokoju rozmów, a drugi do skonfigurowania wątków i obiektów gniazd. W tym artykule oba te zagadnienia zostaną omówione bardziej szczegółowo.

Pierwszym krokiem jest stworzenie nowego gniazda dla każdego wątku, Twojej aplikacji czatowej. Gniazdo to powinno być możliwe do odczytania. Następnym krokiem jest zidentyfikowanie, które gniazda należą do których użytkowników. Następnie serwer rozgłosi wiadomość do wszystkich klientów oprócz tego, który wysłał wiadomość. Po utworzeniu wątku można napisać kod, aby odpowiedzieć wielu użytkownikom czatu jednocześnie. W ten sposób można łatwo zarządzać wieloma wątkami w czacie.

Komunikacja simpleksowa lub jednokierunkowa

W programie komunikatora czatowego istnieją dwa różne rodzaje komunikacji: dupleksowa i simpleksowa. Program komunikatora może obsługiwać komunikację jednokierunkową lub może obsługiwać oba rodzaje. Podstawową różnicą między komunikacją simpleksową i dupleksową jest sposób wysyłania sygnału. Korzystając z trybu komunikacji simpleksowej lub jednokierunkowej, komunikator czatu może wysyłać wiadomości tylko do osoby, której konto posiada.

Aplikacja czatu wykorzystująca Pythona będzie wymagała dwóch programów, serwera i klienta. Te dwa programy nazywane są odpowiednio nadawcą i odbiorcą. Klient będzie odbierał wiadomości i odpowiadał na wiadomości wysyłane przez nadawcę. Program klienta może być zaimplementowany w jednym pliku i być różnymi instancjami tego samego pliku dla różnych klientów. Aplikacja czatu simplex jest bardzo łatwa do napisania i może być używana przez każdego, kto ma doświadczenie w Pythonie.

Funkcjonalność wielu pokoi rozmów

Dodanie funkcjonalności wielu pokoi rozmów do komunikatora chat jest dość prostym projektem w języku Python. Pierwszym krokiem jest wygenerowanie klucza API. Jest to rzecz jednorazowa, więc upewnij się, że wygenerujesz nowy, jeśli kiedykolwiek go stracisz. Jest to ważne, ponieważ możesz przypadkowo popełnić kod, który złamie aplikację. Następnie musisz zaimplementować obsługę zdarzeń po stronie klienta. Te handlery pozwolą użytkownikowi dołączyć i opuścić pokój czatowy.

Podstawowa architektura programu komunikatora czatowego została przedstawiona na poniższym schemacie. Serwer musi być połączony bezpośrednio ze wszystkimi klientami i powinien kategoryzować ich do różnych pokojów rozmów. Wiadomości powinny być nadawane tylko do tego pokoju czatowego, w którym znajduje się nadawca. Do optymalizacji wykorzystania procesora można użyć programowania gniazdowego i wielowątkowości. Potrzebny będzie również skrypt serwera i klienta. Skrypty te są bardzo podobne.

Aby dodać do komunikatora chat funkcjonalność wielu pokoi rozmów, musisz napisać dwa skrypty: skrypt serwera i skrypt klienta. Skrypt serwera to ten, który odbiera wiadomości, natomiast skrypt klienta to ten, który faktycznie wysyła wiadomości do innych klientów. Gdy już napiszesz te skrypty, możesz zacząć budować pokój rozmów. Następnie możesz dodać tę funkcjonalność do dowolnego komunikatora czatu. Możesz nawet połączyć dwa pokoje rozmów jednocześnie.


Podobne tematy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *