Skip to main content

Posts

Showing posts with the label asyncio

JumperBot

In a  previous blog  I described a simple echo bot, that echoes back anything you say to it. This time I will talk about a bot that generates traffic for the chat server, that can be used for load-testing both the chat server as well as any chat clients connected to it. I've dubbed it  JumperBot  - it jumps between chat rooms, saying a few random phrases in each room, then jumping to the next one. This bot builds on the same framework as the  EchoBot  - refer to the previous blog if you are interested in the details. The source lives on GitHub:  https://github.com/snorristurluson/xmpp-chatbot Configure the server In an  earlier blog  I described the setup of Prosody as the chat server to run against. Before we can connect bots to the server we have to make sure they can log in, either by creating accounts for them: prosodyctl register jumperbot_0 localhost jumperbot prosodyctl register jumperbot_1 localhost jumperbot ... or by ...

EchoBot

In a  previous blog  I started discussing Xmpp and showed how to set up an Xmpp server and connecting to it via Python. In this blog I will dig deeper and show how to implement a simple echo bot. The code for this lives on Github:  https://github.com/snorristurluson/xmpp-chatbot Connecting First, let's wrap the network layer. I've picked the Python 3  asyncio  for this task. Let's start by looking at  firstconnection.py . I've created a class called  FirstConnection  that inherits from  asyncio.Protocol . class FirstConnection ( asyncio . Protocol ): def __init__ ( self , host ): self .host = host self .transport = None def connect ( self ): loop = asyncio.get_event_loop() handler = loop.create_connection( lambda : self , self .host, 5222 ) loop.create_task(handler) def connection_made ( self , transport ): logger.debug( " Connection made " ) self .tra...