Понадобятся ли мне consumers.py, asgi.py и routing.py при использовании Websocket API от Tradier?
Итак, я пытаюсь передавать рыночные данные через tradier API с помощью вебсокетов. Вот 2 ссылки на документацию: https://documentation.tradier.com/brokerage-api/streaming/websocket-streaming. https://documentation.tradier.com/brokerage-api/streaming/wss-market-websocket
Я не слишком хорошо знаком с вебсокетами, поэтому мне интересно, нужно ли использовать каналы django и добавить consumers.py, asgi.py и routing.py для передачи рыночных данных в прямом эфире на передний край? Если да, то что мне нужно добавить в каждый из этих файлов?
Я пробовал просто иметь consumers.py и иметь потоковую конечную точку в urls.py
consumers.py:
import json
import logging
import websockets
from channels.generic.websocket import WebsocketConsumer
from .tradingAPI.tradier import tradierFunctions
logger = logging.getLogger(__name__)
class TradierStreamConsumer(WebsocketConsumer):
async def connect(self):
await self.accept()
logger.info("WebSocket connection established")
uri = "wss://ws.tradier.com/v1/markets/events"
async with websockets.connect(uri, ssl=True, compression=None) as websocket:
payload = {
"symbols": ["SPY", "NVDA"],
"sessionid": tradierFunctions.createStreamingSession(),
"filter": ["quote"],
"linebreak": "true"
}
await websocket.send(json.dumps(payload))
logger.info(f"Sent payload: {payload}")
async for message in websocket:
logger.info(f"Received message: {message}")
await self.send(text_data=json.dumps({"message": message}))
urls.py:
urlpatterns = [
...
path('api/tradier/stream', TradierStreamConsumer.as_asgi()),
]
Я ожидал, что на веб-страницу будут передаваться непрерывные JSON-данные, но в действительности я получаю следующее:
Кроме того, вот мой консольный вывод, когда я регистрирую информацию: