【发布时间】:2022-01-12 05:38:18
【问题描述】:
我尝试了这种方法stackoverflow,但没有奏效
consumer.py
import json
import asyncio
from channels.consumer import AsyncConsumer
from django.contrib.auth import get_user_model
from channels.db import database_sync_to_async
from .models import Analytics
class AnalyticsConsumer(AsyncConsumer):
async def websocket_connect(self, event):
print('connected', event)
await self.send({
'type': 'websocket.accept'
})
analytics_obj = await self.getAnalytics()
await self.send({
'type': 'websocket.send',
'text': str(analytics_obj)
})
async def websocket_receive(self, event):
print('receive', event)
async def websocket_disconnect(self, event):
print('disconnected', event)
@database_sync_to_async
def getAnalytics(self):
return list(Analytics.objects.all().values())[0]['number']
控制台显示消息 == analytics_obj 但是当我在数据库中进行更改时,它不会反映在控制台消息中。为此,我需要刷新浏览器。使用 WebSocket 时刷新浏览器有什么意义。
【问题讨论】: