Как подключить несколько аутентифицированных клиентов к 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))
Мне нужны ваши ценные предложения или отзывы, которые будут высоко оценены.