ясно, спасибо за объяснения )
Да просто сам не понимаю почему у меня с 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()