Skip to main content

Asynchronous, single-threaded, poll-based Telnet server

Project description

Miniboa: a simple Telnet server

build status downloads

What?

Miniboa is a bare-bones Telnet server to use as the base for a MUD or similar interactive server. Miniboa has several nice features for this type of application.

Features

  • Asynchronous - no waiting on player input or state.

  • Single threaded - light on resources with excellent performance.

  • Runs under your game loop - you decide when to poll for data.

  • Supports 1000 users under Linux and 512 under Windows (untested).

  • Miniboa is compatible with both Python 2.7, and 3.x

Quick Start

First:

pip install miniboa

And then:

from miniboa import TelnetServer
server = TelnetServer()
while True: server.poll()

But you probably want to do something with the connecting/disconnecting clients:

clients = []


def on_connect(client):
    client.send("Hello, my friend. Stay awhile and listen.")
    clients.append(client)


def on_disconnect(client):
    clients.remove(client)


server = TelnetServer(
    port=3333,
    address='',
    on_connect=on_connect,
    on_disconnect=on_disconnect
    encoding='utf-8')

while True:
    server.poll()

To use Miniboa, you create a Telnet Server object listening at a specified port number. You have to provide two functions for the server; the first is a handler for new connections and the second is the handler for lost connections. These handler functions are passed Telnet Client objects – these are your communication paths to and from the individual player’s MUD client.

For example, let’s say Mike and Joe connect to your MUD server. Telnet Server will call your on_connect() function with Mike’s Telnet Client object, and then again with Joe’s Telnet Client object. If Mike’s power goes out, Telnet Server will call your on_disconnect() function with Mike’s Telnet Client object (same exact one).

This will launch a server listening on the default port, that accepts Telnet connections and sends a simple message.

$ telnet localhost 7777
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, my friend. Stay awhile and listen.

Further documentation can be found here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miniboa-1.0.9.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

miniboa-1.0.9-py2.py3-none-any.whl (16.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file miniboa-1.0.9.tar.gz.

File metadata

  • Download URL: miniboa-1.0.9.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for miniboa-1.0.9.tar.gz
Algorithm Hash digest
SHA256 a2111d8bd045d714b8e89e5ea658c274793b539f6ade8ed4b9b1914a7086029d
MD5 e6fdadecee95e26caf68f7cc4d9bf4b0
BLAKE2b-256 792e7cd8eb254de1764c26c9d5d1eb6a06a6eed027263c3d412278f1e92fb6c2

See more details on using hashes here.

File details

Details for the file miniboa-1.0.9-py2.py3-none-any.whl.

File metadata

  • Download URL: miniboa-1.0.9-py2.py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for miniboa-1.0.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 236942ea7fb939a9880ef9a606967928ce2f803823682eece83f74cd0a8cbaaf
MD5 ea0cd1dc85aed2dfa1a2e60d4a63f429
BLAKE2b-256 91fbb5e9240d25147c0c72022210e602356d84b14ed62a5c87c14ac69ea311fb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page