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)
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
aiows-0.0.3-py3-none-any.whl
(8.3 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
804ad441fa6aa4ab6ced85eec51bec720bae0ff7e1cc133822ad8ce8eb4079fc
|
|
| MD5 |
ed9eec8f5bca75b0aca5101684b90a80
|
|
| BLAKE2b-256 |
63d3c08baeb8054e33236f61a5dc174db3118b2cce6778ff1367b8f6389351fa
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62812f9473a86c9fe253e1bbdffa1f1998fb620caf7fa8967130b0844bb2c573
|
|
| MD5 |
d4f1c0dec068c203665d108dbedf6a9f
|
|
| BLAKE2b-256 |
bbde6026c472e3a7a6ddb1a760a6bf1effc43316f26ed91c75025366de85ebea
|