2010-03-02 14 views
6

Próbuję napisać skrypt szybkiego testu obciążenia dla naszego klastra ejabberd, który po prostu loguje się do pokoju rozmów, wysyła kilka losowych wiadomości, a następnie kończy działanie.pyxmpp: szybki samouczek do tworzenia klienta muc?

Próbowaliśmy tego testu z tsung, ale według autorów funkcja muc nie dotarła do tego wydania.

Wydaje się, że pyxmpp ma tę funkcjonalność, ale jest przeklęty, jeśli mogę wymyślić, jak to zrobić. Oto nadzieja, że ​​ktoś ma szybkie wyjaśnienie, jak zbudować klienta i dołączyć/wysłać do muc.

Dzięki!

Odpowiedz

6

Hej, natknąłem się na twoje pytanie kilka razy, próbując tego samego. Oto moja odpowiedź:

Korzystanie http://pyxmpp.jajcus.net/svn/pyxmpp/trunk/examples/echobot.py jako QuickStart, wszystko co musisz zrobić, to import MUC-Stuff

from pyxmpp.jabber.muc import MucRoomState, MucRoomManager 

A gdy podłączony jest Client, można podłączyć do swojego pokoju:

def session_started(self): 
    """Handle session started event. May be overriden in derived classes. 
    This one requests the user's roster and sends the initial presence.""" 
    print u'SESSION STARTED' 
    self.request_roster() 
    p=Presence() 
    self.stream.send(p) 
    print u'ConnectToParty' 
    self.connectToMUC() 

def connectToMUC(self): 
    self.roomManager = MucRoomManager(self.stream); 
    self.roomHandler = MucRoomHandler() 
    self.roomState = self.roomManager.join(
     room=JID('[email protected]'), 
     nick='PartyBot', 
     handler=self.roomHandler, 
     history_maxchars=0, 
     password = None) 
    self.roomManager.set_handlers() 

aby wysłać wiadomość, wszystko co musisz zrobić, to self.roomState.send_message wezwanie ("Wysyłając wiadomość")

aby zrobić rzeczy, dziedziczyć MucRoomHandler i reaguj na zdarzenia. Zwróć uwagę "set_handlers()" na roomManager, jest to ważne, inaczej callbacks nie będą wywoływane ..

+0

To jest bilet! Dzięki! – Lysdexia