2013-12-10 2 views
1

Я пишу какое-то программное обеспечение для резервного копирования с помощью Twisted PB для получения информации с сервера и с сервера, и все работает очень хорошо.Отслеживание клиентов подключается к серверу Twisted PB

Что бы я хотел, чтобы отслеживать, какие клиенты подключены к серверу. Мне удалось получить IP-адрес соединения, зарегистрированного при подключении клиента. Первоначально клиенты получают доступ к объекту pb.Root, который имеет только один метод, этот метод возвращает другой объект, который предоставляет доступ к сохраненным данным.

Что мне нужно сделать, это обновить сведения о подключении для подключенного клиента, чтобы включить некоторую информацию, которая отправляется в вызове, отправленном на сервер.

Вот мой код для клиента каротажного

class RKRServerFactory(pb.PBServerFactory): 

    clientsConnected = {} 

    def buildProtocol(self, addr): 
     """ 
     Return a Broker attached to the factory (as the service provider). 
     """ 
     self.clientsConnected[addr.host] = None 
     print self.clientsConnected 
     proto = self.protocol(isClient=False, security=self.security) 
     proto.factory = self 
     proto.setNameForLocal("root", self.root.rootObject(proto)) 
     return proto 

Вот код для первоначального подключения метода

def __init__(self): 
    self.hostid = None 
    self.storage = None 
    self.databasepath = None 

def remote_connect(self, hostid): 
    self.hostid = hostid 
    self.databasepath = os.path.join(os.path.join("/media/098974ed-f717-4dd4-8306-7c4863e87e67/rkr_server_storage", hostid)) 
    try: 
     self.__initDatabase(self.databasepath) 
    except IOError, e: 
     return defer.fail(e) 
    self.storage = RKRStorage(self) 
    return defer.succeed(self.storage) 

Я не уверен, как получить отсоединение клиента, чтобы быть зарегистрированным тоже. Если кто-то может помочь, я бы очень признателен.

ответ

0

Скрученные триггеры clientConnectionLost() событие/способ.

Пример:

def clientConnectionLost(self, connector, reason): 
    print 'Lost connection. Reason:', reason 

См: https://twistedmatrix.com/documents/11.1.0/core/howto/clients.html для примеров и деталей.

+0

Я пытаюсь отслеживать подключенных клиентов на конце сервера PB-соединения, и я не вижу способа сделать это. – Deano123

+0

Так вы это делаете. Создает методы для '' clientConnectMade'' и '' clientConnectionLost'' и сохраняет сопоставление где-то из ваших подключенных клиентов. –

Смежные вопросы