Skip to main content

Modern WebSocket framework inspired by aiogram

Project description

wsogram

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 wsogram
"""

# Import main wsogram classes
from wsogram 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 wsogram

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

wsogram-0.0.2.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.

wsogram-0.0.2-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file wsogram-0.0.2.tar.gz.

File metadata

  • Download URL: wsogram-0.0.2.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 wsogram-0.0.2.tar.gz
Algorithm Hash digest
SHA256 eac8be108587fdf11ddcbff96692c0942ac01ee69529e49a9025913b9cb98e0b
MD5 d29686dc6a5276645c715d52178f76a1
BLAKE2b-256 cb11c43ef75083c6c29f58f5163f2069f551d00a26a0946400e8d75a6755423d

See more details on using hashes here.

File details

Details for the file wsogram-0.0.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for wsogram-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aa8bb111c2e0b1af607a8ba880602769acfb968fc18a6587be4c1de1102d49c8
MD5 87b0dba7aadaf1f677ff56de2806298e
BLAKE2b-256 e60c3f3472f6ec1398163c75bedcf07c43dd08457ea12ad7b3145c105c9f1798

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