1717from starlette .websockets import WebSocket , WebSocketDisconnect
1818
1919from rsocket .exceptions import RSocketTransportError
20- from rsocket .frame import Frame
20+ from rsocket .frame import Frame , serialize_with_frame_size_header
2121from rsocket .helpers import wrap_transport_exception , cancel_if_task_exists
2222from rsocket .logger import logger
2323from rsocket .transports .abstract_messaging import AbstractMessagingTransport
@@ -159,7 +159,8 @@ def __init__(self, websocket: Union[WebSocket, ClientWebSocket]):
159159 async def send_frame (self , frame : Frame ):
160160 with wrap_transport_exception ():
161161 try :
162- await self ._websocket .send_bytes (frame .serialize ())
162+ data = serialize_with_frame_size_header (frame )
163+ await self ._websocket .send_bytes (data )
163164 except WebSocketDisconnect :
164165 self ._disconnect_event .set ()
165166
@@ -177,7 +178,7 @@ async def incoming_data_listener(self):
177178 self ._disconnect_event .set ()
178179 break
179180
180- async for frame in self ._frame_parser .receive_data (data , 0 ):
181+ async for frame in self ._frame_parser .receive_data (data ):
181182 self ._incoming_frame_queue .put_nowait (frame )
182183
183184 except asyncio .CancelledError :
@@ -189,3 +190,6 @@ async def incoming_data_listener(self):
189190
190191 async def wait_for_disconnect (self ):
191192 await self ._disconnect_event .wait ()
193+
194+ def requires_length_header (self ) -> bool :
195+ return True
0 commit comments