Найти - Пользователи
Полная версия: Общение между юзерами (Twisted)
Начало » Web » Общение между юзерами (Twisted)
1 2
bw
Я даже не знаю как реагировать на ваши вопросы, попросту нет слов. При чём здесь Twisted и серверная часть вообще? Вы не понимаете столь элементарных вещей, которые познаются буквально в первые 15 минут изучения языка (любого языка), это базовые типы, такие как (в данном случае) списки и целые числа и элементарные операции, вроде добавления элемента в список, удаление элемента из списка, увеличение и уменьшение целочисленной переменной на заданное число (в данном случае 1). Как эти два типа и четыре операции могут сбивать с толку я ума не приложу.

`numConnections` здесь (ну и это просто ОЧЕВИДНО же) это просто счётчик подключений, который нахрен не нужен, если есть, скажем `clients`, из примера выше. Я не понию как это может быть не понятно. Может стоит начать с книжки по основам Python. Даже если сильно хочется попрактиковать (безусловно похвальное желание), наверное всё же стоит сдерживать себя и прежде разобраться в основах, в частности с базовыми типами и операциями над ними. Потому что, если вы не понимаете что такое i += 1, о чём вообще можно с вами говорить. Если бы там хотя бы было `+= self`, а так…

Постарайтесь пожалуйста задавать в будущем вопросы чуть посложней, а то над этим я 4 дня думал :-).

..bw
Shyt_nik
ясно, спасибо за объяснения )
Да просто сам не понимаю почему у меня с twisted касяк я с django моментально разобрался и че по чем а тут встало и все тут


помогите с этим тогда разобраться, я что то пониаю а что то вообще отсутствует, просветите меня пожалуйсто

from twisted.internet.protocol import Factory, Protocol
from twisted.protocols.basic import LineReceiver
class ChatProtocol(LineReceiver):
    def __init__(self, factory): // не понимаю откуда взялся factory главное что за данные в нём?
        self.factory = factory
        self.name = None // это я понимаю как юзер который обратился
        self.state = "REGISTER" // это что провести условия и дать значению новому, типа авторизации
        
    def connectionMade(self):
        self.sendLine("What's your name?") // только подключился сразу спрашиваем кто он
        
    def connectionLost(self, reason):
        if self.name in self.factory.users: // users это вроде как словарь ключ:значение типа Вася:Register, только не понятно как он его нашел там по сути их много должно быть
                                                            
            del self.factory.users[self.name] // здесь удаляют именно того кто обратился
            self.broadcastMessage("%s has left the channel." % (self.name,)) // типа функция с текстом и в начале имя юзера
          
    def lineReceived(self, line):
        if self.state == "REGISTER": //вот началось проверка кто он 
            self.handle_REGISTER(line) // если он первый раз пришел то вызываем эту функцию и как понимаю в line его имя
        else:
            self.handle_CHAT(line) // тут по сути прошла авторизация и это думаю уже текст
            
    def handle_REGISTER(self, name): // вот наша авторизация
        if name in self.factory.users: // типа он проверил есть ли такой уже чел хотя для меня не ястность почему в if а не в for  как он умудрился проверить за раз
            self.sendLine("Name taken, please choose another.") // типа что то мы ему отправляем
            return
        self.sendLine("Welcome, %s!" % (name,)) // типа сервер здаровается или что то вроде этого но две строчки как то запутаны и ладом не понял
        self.broadcastMessage("%s has joined the channel." % (name,))
        self.name = name
        self.factory.users[name] = self // тут по сути он обавил нового в словарь
        self.state = "CHAT" // тут ему дали другой статус
        
    def handle_CHAT(self, message): // это типа он авторизирован с текстом
        message = "<%s> %s" % (self.name, message)
        self.broadcastMessage(message)// типа эта видать функция отвечает за отдачу и как я вижу for то вроде всем но жутко сомневаюсь
        
    def broadcastMessage(self, message):
        for name, protocol in self.factory.users.iteritems():
            if protocol != self:
                protocol.sendLine(message) // вот функция раздачи
                
class ChatFactory(Factory):
    def __init__(self):
        self.users = {}
        
    def buildProtocol(self, addr): //  не поиму что за данные в addr?
        return ChatProtocol(self) // это как бы наследие addr
      
if __name__ == '__main__':
    from twisted.internet import reactor
    reactor.listenTCP(8000, ChatFactory())
    reactor.run()
s0rg
Shyt_nik
помогите с этим тогда разобраться, я что то пониаю а что то вообще отсутствует, просветите меня пожалуйсто
Слишком много вам придется объяснять - лучше прочитайте книгу по питону (как и советовал bw), затем - книгу по Twisted. Наврятли вы найдете желающих разжевывать (настолько подробно) вам все примеры твистеда.

P.S. Сюдя по вашим вопросам - братся за твистед вам еще рано, у этого фреймворка далеко не самая лучшая/полная документация и зачастую чтобы понять особенности работы нужно читать его код. Ну и без понимания таких паттернов как реактор и фабрика к нему вообще сложно подступиться.
Shyt_nik
вот мне и надо заципиться, чуть разобраться в примерах там я уже поиму как вся технология работает и смогу читать код
FishHook
Shyt_nik,
Вам тут пытаются объяснить, что асинхронное программирование - это не для нубов, коего Вы судя по всему являете. Сначала научитесь уверенно писать классические студенческие программки, потом будет о чем толковать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB