Как подключить несколько аутентифицированных клиентов к Django-каналам Websocket, причем клиенты должны быть подключены до открытия каналов?

Так что я работаю над приложением для настольных компьютеров, которое требует сокета для обработки нескольких аутентифицированных клиентов с каналом Django, и клиенты должны быть аутентифицированы сервером перед открытием каналов. Сервер работает на одной системе, а клиенты подключаются к нескольким системам. Я пытался подключить сокет с другой платформой, приложив много усилий, но мне не удалось подключить его. Возможно ли подключить к серверу клиентов на разных платформах? Если да, пожалуйста, помогите мне решить эту проблему, потому что я новичок в этой технологии.

Мой вопрос: используя приведенный ниже код, как я смогу подключить несколько клиентов? Я пробовал использовать списки, но я просто не могу понять их формат. Как я могу сделать так, чтобы несколько клиентов были подключены к Websocket, и я мог отправлять данные определенному или нескольким клиентам? И как добавить каналы в приведенный ниже код?

server.py

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

serversocket.bind(('localhost', 8080))

serversocket.listen(10)  # become a server socket connections

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print(buf)
        break

Here is the client script, I don't want to send data using an API any other way to get data from the server side:

client.py
def register_user():
    username = reg_username_entry.get()
    password = reg_password_entry.get()
    if not username or not password:
        messagebox.showerror("Input Error", "Please enter a username and password.")
        return

    data = {
        'username': username,
        'password': password
    }

    try:
        response = requests.post("http://127.0.0.1:8000/api/register/", json=data)
        if response.status_code == 200:
            messagebox.showinfo("Success", response.json()['success'])
        else:
            try:
                error_message = response.json().get('error', 'Registration failed')
            except ValueError:
                error_message = response.text
            messagebox.showerror("Error", error_message)
    except requests.exceptions.RequestException as e:
        messagebox.showerror("Request failed", str(e))


def login_user():
    hostname = socket.gethostname()
    ip_address = socket.gethostbyname(hostname)

    username = login_username_entry.get()
    password = login_password_entry.get()
    if not username or not password:
        messagebox.showerror("Input Error", "Please enter a username and password.")
        return

    data = {
        'username': username,
        'password': password
    }

    try:
        response = requests.post("http://127.0.0.1:8000/api/login/", json=data)
        if response.status_code == 200:
            messagebox.showinfo("Success", response.json()['success'])
            # messagebox.showinfo("Message", "Hey There! I hope you are doing well.")
            clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            clientsocket.connect(('localhost', 8080))
            clientsocket.send(bytes('Socket Connected!', 'utf-8'))
            print(f"Hostname: {hostname}")
            print(f"IP Address: {ip_address}")

        else:
            try:
                error_message = response.json().get('error', 'Login failed')
            except ValueError:
                error_message = response.text
            messagebox.showerror("Error", error_message)
    except requests.exceptions.RequestException as e:
        messagebox.showerror("Request failed", str(e))

Мне нужны ваши ценные предложения или отзывы, которые будут высоко оценены.

Вернуться на верх