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
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eac8be108587fdf11ddcbff96692c0942ac01ee69529e49a9025913b9cb98e0b
|
|
| MD5 |
d29686dc6a5276645c715d52178f76a1
|
|
| BLAKE2b-256 |
cb11c43ef75083c6c29f58f5163f2069f551d00a26a0946400e8d75a6755423d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa8bb111c2e0b1af607a8ba880602769acfb968fc18a6587be4c1de1102d49c8
|
|
| MD5 |
87b0dba7aadaf1f677ff56de2806298e
|
|
| BLAKE2b-256 |
e60c3f3472f6ec1398163c75bedcf07c43dd08457ea12ad7b3145c105c9f1798
|