3
3
4
4
import anyio
5
5
from anyio .streams .memory import MemoryObjectReceiveStream , MemoryObjectSendStream
6
+ from pydantic_core import ValidationError
6
7
from starlette .types import Receive , Scope , Send
7
8
from starlette .websockets import WebSocket
8
9
@@ -33,10 +34,10 @@ async def websocket_server(scope: Scope, receive: Receive, send: Send):
33
34
async def ws_reader ():
34
35
try :
35
36
async with read_stream_writer :
36
- async for message in websocket .iter_json ():
37
+ async for msg in websocket .iter_text ():
37
38
try :
38
- client_message = types .JSONRPCMessage .model_validate ( message )
39
- except Exception as exc :
39
+ client_message = types .JSONRPCMessage .model_validate_json ( msg )
40
+ except ValidationError as exc :
40
41
await read_stream_writer .send (exc )
41
42
continue
42
43
@@ -48,10 +49,8 @@ async def ws_writer():
48
49
try :
49
50
async with write_stream_reader :
50
51
async for message in write_stream_reader :
51
- obj = message .model_dump (
52
- by_alias = True , mode = "json" , exclude_none = True
53
- )
54
- await websocket .send_json (obj )
52
+ obj = message .model_dump_json (by_alias = True , exclude_none = True )
53
+ await websocket .send_text (obj )
55
54
except anyio .ClosedResourceError :
56
55
await websocket .close ()
57
56
0 commit comments