Можно ли переподключить сокет каналов 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'])

        }

    }

Что я пытаюсь сделать

  1. нажатие кнопки
  2. переподключить depth_socket, передав параметр

Что я пробовал

  1. кэширование значения символа
  2. при нажатии на кнопку происходит выборка и установка кэша (Но я не думаю, что это хороший способ, и не могу переподключиться)

Если это невозможно, я буду благодарен, если вы порекомендуете другой способ.

Вернуться на верх