Skip to content

Commit 5b1e77f

Browse files
fix: websockets (#1303)
* fix: websockets * update * update * update * update * update * update * update * update * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 3a53ef6 commit 5b1e77f

15 files changed

Lines changed: 1022 additions & 370 deletions

File tree

docs_src/src/pages/documentation/en/api_reference/dependency_injection.mdx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,44 @@ Note: `router_dependencies`, `global_dependencies` are reserved parameters and *
7171
</Col>
7272
</Row>
7373

74+
### WebSocket Dependency Injection
75+
76+
<Row>
77+
<Col>
78+
WebSockets support the same dependency injection system as HTTP routes. The `global_dependencies` and `router_dependencies` parameters work in the main handler, `on_connect`, and `on_close` callbacks.
79+
</Col>
80+
<Col>
81+
<CodeGroup title="WebSocket DI" tag="WebSocket" label="/chat">
82+
```python {{ title: 'WebSocket DI' }}
83+
from robyn import Robyn
84+
import logging
85+
86+
app = Robyn(__file__)
87+
88+
app.inject_global(logger=logging.getLogger(__name__))
89+
app.inject(cache=RedisCache())
90+
91+
@app.websocket("/chat")
92+
async def chat(websocket, global_dependencies=None, router_dependencies=None):
93+
logger = global_dependencies.get("logger")
94+
cache = router_dependencies.get("cache")
95+
logger.info(f"New connection: {websocket.id}")
96+
97+
while True:
98+
message = await websocket.receive_text()
99+
cache.set(f"ws_{websocket.id}", message)
100+
await websocket.broadcast(f"User {websocket.id}: {message}")
101+
102+
@chat.on_connect
103+
async def on_connect(websocket, global_dependencies=None):
104+
logger = global_dependencies.get("logger")
105+
logger.info(f"Client connected: {websocket.id}")
106+
return "Connected"
107+
```
108+
</CodeGroup>
109+
</Col>
110+
</Row>
111+
74112
---
75113

76114

0 commit comments

Comments
 (0)