2022-08-29 19:41:15 +00:00
|
|
|
# from typing import Union
|
|
|
|
#
|
|
|
|
# from fastapi import WebSocket as FastAPIWebSocket
|
|
|
|
# from websockets import WebSocketClientProtocol as WebSocket
|
|
|
|
#
|
|
|
|
# from freqtrade.rpc.external_signal.types import WebSocketType
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# class WebSocketProxy:
|
|
|
|
# """
|
|
|
|
# WebSocketProxy object to bring the FastAPIWebSocket and websockets.WebSocketClientProtocol
|
|
|
|
# under the same API
|
|
|
|
# """
|
|
|
|
#
|
|
|
|
# def __init__(self, websocket: WebSocketType):
|
|
|
|
# self._websocket: Union[FastAPIWebSocket, WebSocket] = websocket
|
|
|
|
#
|
|
|
|
# async def send(self, data):
|
|
|
|
# """
|
|
|
|
# Send data on the wrapped websocket
|
|
|
|
# """
|
|
|
|
# if isinstance(data, str):
|
|
|
|
# data = data.encode()
|
|
|
|
#
|
|
|
|
# if hasattr(self._websocket, "send_bytes"):
|
|
|
|
# await self._websocket.send_bytes(data)
|
|
|
|
# else:
|
|
|
|
# await self._websocket.send(data)
|
|
|
|
#
|
|
|
|
# async def recv(self):
|
|
|
|
# """
|
|
|
|
# Receive data on the wrapped websocket
|
|
|
|
# """
|
|
|
|
# if hasattr(self._websocket, "receive_bytes"):
|
|
|
|
# return await self._websocket.receive_bytes()
|
|
|
|
# else:
|
|
|
|
# return await self._websocket.recv()
|
|
|
|
#
|
|
|
|
# async def ping(self):
|
|
|
|
# """
|
|
|
|
# Ping the websocket, not supported by FastAPI WebSockets
|
|
|
|
# """
|
|
|
|
# if hasattr(self._websocket, "ping"):
|
|
|
|
# return await self._websocket.ping()
|
|
|
|
# return False
|
|
|
|
#
|
|
|
|
# async def close(self, code: int = 1000):
|
|
|
|
# """
|
|
|
|
# Close the websocket connection, only supported by FastAPI WebSockets
|
|
|
|
# """
|
|
|
|
# if hasattr(self._websocket, "close"):
|
|
|
|
# return await self._websocket.close(code)
|
|
|
|
# pass
|
|
|
|
#
|
|
|
|
# async def accept(self):
|
|
|
|
# """
|
|
|
|
# Accept the WebSocket connection, only support by FastAPI WebSockets
|
|
|
|
# """
|
|
|
|
# if hasattr(self._websocket, "accept"):
|
|
|
|
# return await self._websocket.accept()
|
|
|
|
# pass
|