Вопрос с чатом на python и socket
Когда пользователь подключается к чату - он отправляет на сервер свой username и свой ip. Далее для него идет выбор куда писать:
- Direct
- Group
- Global chat
И вот в чем проблема, если с Direct все ясно, то как можно реализовать Group и Global chat? Вот что отправляет клиент на сервер:
'from_user': username,
'code': 'global',
'to_user': to_user,
'text': text,
'ip': ip, # socket.gethostbyname(socket.gethostname())
'port': 750
и сервер принимает пакет как message и смотрит, есть ли пользователь в clients {}, если нет - он добавляет его через clients[message['from_user']] = message['ip'].
И если клиент хочет написать в глобальный чат, то как можно это все реализовать? Может что-то нужно добавить или убрать? Реально ли сделать группой чат примерно как код ниже:
'from_user': username,
'code': 'global',
'to_user': [user1, user2, user3],
'text': text,
'ip': ip, # socket.gethostbyname(socket.gethostname())
'port': 750
я не очень разбираюсь в этом, поэтому буду рад услышать критику :)
upd: про
как код ниже
если в поле to_user добавить массив с никами.
Т.е если user1 хочет написать user2, user3 и user4, то на сервер отправляется пакет и в поле указывается to_user и флажком group: True . Получается сервер может отправлять другим участникам как
i = 0
for i > len(message['to_user']:
socket.sendto(message, (message['to_user'][i], 750))
Верно? и если есть ошибка - как устранить