Skip to main content

Modern WebSocket framework inspired by aiogram

Project description

aiows

Modern WebSocket framework for Python inspired by aiogram

Features

  • Declarative approach with decorators
  • Typed messages with Pydantic
  • Simple routing like in aiogram
  • Async/await support

Quick Start

"""
Simple chat example using aiows
"""

# Import main aiows classes
from aiows import WebSocketServer, Router, ChatMessage, WebSocket


# Create router for handling events
router = Router()


@router.connect()
async def handle_connect(websocket: WebSocket):
    """Connection handler - send welcome message"""
    print(f"New connection!")
    
    # Send welcome message
    welcome_data = {
        "type": "chat",
        "text": "Welcome to chat!",
        "user_id": 0
    }
    await websocket.send_json(welcome_data)


@router.message("chat") 
async def handle_chat_message(websocket: WebSocket, message: ChatMessage):
    """Chat message handler - send echo response"""
    print(f"Received message from user {message.user_id}: {message.text}")
    
    # Create response message (echo)
    response_data = {
        "type": "chat",
        "text": f"Echo: {message.text}",
        "user_id": 999  # Bot ID
    }
    await websocket.send_json(response_data)


@router.disconnect()
async def handle_disconnect(websocket: WebSocket, reason: str):
    """Disconnect handler - log the event"""
    print(f"User disconnected. Reason: {reason}")


def main():
    """Main function - create and run server"""
    # Create server
    server = WebSocketServer()
    
    # Connect router to server
    server.include_router(router)
    
    # Run server on localhost:8000
    print("Starting chat server...")
    print("Connect via WebSocket at ws://localhost:8000")
    server.run(host="localhost", port=8000)


if __name__ == "__main__":
    main()

Installation

pip install aiows

Requirements

  • Python 3.8+
  • pydantic>=2.0.0

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

aiows-0.0.3.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiows-0.0.3-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file aiows-0.0.3.tar.gz.

File metadata

  • Download URL: aiows-0.0.3.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for aiows-0.0.3.tar.gz
Algorithm Hash digest
SHA256 804ad441fa6aa4ab6ced85eec51bec720bae0ff7e1cc133822ad8ce8eb4079fc
MD5 ed9eec8f5bca75b0aca5101684b90a80
BLAKE2b-256 63d3c08baeb8054e33236f61a5dc174db3118b2cce6778ff1367b8f6389351fa

See more details on using hashes here.

File details

Details for the file aiows-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: aiows-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for aiows-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 62812f9473a86c9fe253e1bbdffa1f1998fb620caf7fa8967130b0844bb2c573
MD5 d4f1c0dec068c203665d108dbedf6a9f
BLAKE2b-256 bbde6026c472e3a7a6ddb1a760a6bf1effc43316f26ed91c75025366de85ebea

See more details on using hashes here.

Supported by

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