pyxmpp: 创建MUC客户端的快速教程?
我正在尝试为我们的ejabberd集群写一个快速的负载测试脚本,这个脚本的功能很简单,就是登录一个聊天室,发几条随机消息,然后退出。
我们之前尝试用tsung来进行这个测试,但根据开发者的说法,这个版本并没有包含多用户聊天室(muc)的功能。
pyxmpp似乎有这个功能,但我实在搞不懂怎么让它工作。希望有人能简单解释一下怎么构建客户端并加入/发布到多用户聊天室。
谢谢!
1 个回答
6
嘿,我在尝试做同样的事情时,几次碰到了你的问题。这里是我的回答:
可以用这个链接的代码作为快速入门:http://pyxmpp.jajcus.net/svn/pyxmpp/trunk/examples/echobot.py,你只需要导入一些关于聊天室的东西。
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 这个类继承,并对事件做出反应。注意要对 roomManager 调用 "set_handlers()",这很重要,否则回调函数就不会被调用。