FastAPIWebsocketTransport: don't initialize if a second StartFrame is received

This commit is contained in:
Aleix Conchillo Flaqué
2025-05-30 07:49:58 -07:00
parent 0c7e3cfcb2
commit f2eb869b02

View File

@@ -122,8 +122,17 @@ class FastAPIWebsocketInputTransport(BaseInputTransport):
self._receive_task = None
self._monitor_websocket_task = None
# Whether we have seen a StartFrame already.
self._initialized = False
async def start(self, frame: StartFrame):
await super().start(frame)
if self._initialized:
return
self._initialized = True
await self._client.setup(frame)
if self._params.serializer:
await self._params.serializer.setup(frame)
@@ -204,8 +213,17 @@ class FastAPIWebsocketOutputTransport(BaseOutputTransport):
self._send_interval = 0
self._next_send_time = 0
# Whether we have seen a StartFrame already.
self._initialized = False
async def start(self, frame: StartFrame):
await super().start(frame)
if self._initialized:
return
self._initialized = True
await self._client.setup(frame)
if self._params.serializer:
await self._params.serializer.setup(frame)