pyxmpp: краткое руководство по созданию клиента muc? - PullRequest
6 голосов
/ 02 марта 2010

Я пытаюсь написать скрипт быстрого нагрузочного теста для нашего кластера ejabberd, который просто входит в чат, отправляет пару случайных сообщений и затем завершает работу.

Мы пытались провести этот конкретный тест с помощью tsung, но, по словам авторов, функциональность muc не попала в этот выпуск.

pyxmpp, похоже, обладает этой функциональностью, но черт побери, если я смогу понять, как заставить его работать. Мы надеемся, что у кого-то есть быстрое объяснение того, как создать клиент и присоединиться / опубликовать его в muc.

Спасибо!

1 Ответ

6 голосов
/ 26 июля 2010

Эй, я наткнулся на ваш вопрос несколько раз, пытаясь сделать то же самое. Вот мой ответ:

Используя http://pyxmpp.jajcus.net/svn/pyxmpp/trunk/examples/echobot.py в качестве быстрого запуска, все, что вам нужно сделать, это импортировать MUC-Stuff

from pyxmpp.jabber.muc import MucRoomState, MucRoomManager

И когда ваш Клиент подключен, вы можете подключиться к своей комнате:

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('room@conference.server.domain'),
        nick='PartyBot',
        handler=self.roomHandler, 
        history_maxchars=0,
        password = None)
    self.roomManager.set_handlers()

Чтобы отправить сообщение, все, что вам нужно сделать, это вызвать self.roomState.send_message («Отправка этого сообщения»)

Чтобы делать вещи, наследовать от MucRoomHandler и реагировать на события. Обратите внимание на "set_handlers ()" для roomManager, хотя это важно, иначе обратные вызовы не будут вызываться ..

...