Можно ли переподключить сокет каналов Django, передав параметр при нажатии на кнопку?
python
class BookConsumer(AsyncJsonWebsocketConsumer):
async def connect(self):
await self.accept()
await self.execute_websocket_ticker()
async def process_message(self, message):
asyncio.create_task(self.send_json(message))
async def start_binance_depthsocket(self, symbol=None):
client = await AsyncClient.create()
bsm = BinanceSocketManager(client)
if not symbol:
symbol = 'btcusdt'
async with bsm.depth_socket(symbol=symbol, depth='10') as ts:
while True:
data = await ts.recv()
res = {'site': 'binanceSpot', 'type': 'depthsocket', 'data': data}
await self.process_message(res)
async def execute_websocket_ticker(self):
asyncio.create_task(self.start_binance_depthsocket())
js
var book_socket = new WebSocket('ws://' + window.location.host +'/ws/book?session_key=${sessionKey}')
book_socket.onmessage = function (e) {
let data = JSON.parse(e.data)
let site = data['site']
let type = data['type']
if (type == 'depthsocket') {
update_orderbook(site, data['data']['asks'], data['data']['bids'])
}
}
Что я пытаюсь сделать
- нажатие кнопки
- переподключить depth_socket, передав параметр
Что я пробовал
- кэширование значения символа
- при нажатии на кнопку происходит выборка и установка кэша (Но я не думаю, что это хороший способ, и не могу переподключиться)
Если это невозможно, я буду благодарен, если вы порекомендуете другой способ.