Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Чат-сервер


Автор: Chuck 23.9.2006, 22:28
Вопрос не столько в реализации, сколько в продумывании алгоритма.
Идея - написать чат-сервер, многопоточный, который просто рассылает всем клиентам сообщения. Само собой, возможности проверки активности клиентов, бана должны присутствовать, но это потом.
Для начала, мое решение.
Есть функция listen_clients, которая принимает идентификатор клиента и запускает процес, передавая клиента на прослушку функции client, client в свою очередь слушает в своем потоке своего клиента и добавляет записи от клиента в глобальный список.

Отдельный поток каждый раз проходится по списку на предмет новых записей и рассылает всем клиентам новое.

Расскажите, как это правильно сделать, как вообще это делается и что нужно знать, почитать!

З.Ы. Не нужно предлагать использовать готовое, я пишу для практики!
З.Ы.Ы. Клиент будет самописный, так что это тоже не вопрос ...

Автор: slav0nic 24.9.2006, 11:41
можешь ещё прикрутить sqlite и хранить там очереди и оффлайн мессаги
а по поводу написания, в чём проблема? или всё пиши на чистом пиотне или на twisted, про твистед нчиего не скажу, читай буку http://slav0nic.xss.ru/books/python/O'Reilly,.Twisted.Network.Programming.Essentials.(2005).DDU.LotB.chm , по поводу написания серверов и клиентов (работа с сокета=) ) читай лутца%)
а знать нужно socket, select, fork, threadind или xmlrpc (это ща модно=) - и опятьже готовые модули), или только SocketServer smile, что тебе и советую

Автор: pythonwin 25.9.2006, 09:40
а почему именно sqllite, а не какая-то другая БД?

Автор: slav0nic 25.9.2006, 10:26
%)потому что это самое быстрое и простое решение;)
и надо понимать, когда юзать субд, а когда БД smile 

Автор: slav0nic 28.9.2006, 11:54
вот я постил про скорость http://slav0nic.livejournal.com/13771.html

Автор: pythonwin 28.9.2006, 12:14
Цитата(slav0nic @  28.9.2006,  18:54 Найти цитируемый пост)
вот я постил про скорость http://slav0nic.livejournal.com/13771.html 


Цитата(slav0nic @  28.9.2006,  18:54 Найти цитируемый пост)
вот я постил про скорость http://slav0nic.livejournal.com/13771.html 

что-то там на postgresql поклёп smile
всё не так плохо! smile

Автор: albertn 28.9.2006, 14:38
Цитата(slav0nic @  28.9.2006,  11:54 Найти цитируемый пост)
вот я постил про скорость http://slav0nic.livejournal.com/13771.html 

Тесты не объективны.

Автор: PyS 28.9.2006, 15:01
Цитата(albertn @  28.9.2006,  17:38 Найти цитируемый пост)
Тесты не объективны. 

а доказательства?

Автор: slav0nic 28.9.2006, 15:38
про psql наверно да) не думаю что там всё так плохо, он на много серьёзней mysql в плане настроек и возможностей

Автор: albertn 28.9.2006, 15:48
Цитата(PyS @  28.9.2006,  15:01 Найти цитируемый пост)
а доказательства? 

http://www.sqlite.org/cvstrac/wiki?p=SpeedComparison Ссылка говорит сама за себя. Кто их знает, мож они их поставили в неравные условия. Нужен независимый тестер.

Автор: slav0nic 1.10.2006, 10:36
но всё равно sqlite  будет  быстрее) так как это простая БД, а не сложная субд=)
но топик не об этом В)

Автор: pythonwin 1.10.2006, 11:35
Цитата(slav0nic @  1.10.2006,  17:36 Найти цитируемый пост)
но всё равно sqlite  будет  быстрее) так как это простая БД, а не сложная субд=)
но топик не об этом В) 

Согласен!

Предлагаю не отклоняться от темы - "Чат-сервер" smile

 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)