无法将数据库中的数据实时发送到客户端不刷新 - DJANGO CHANNELS
Cant send the data from the database to the client in real time without refreshing - DJANGO CHANNELS
我试过这个方法Whosebug但是没用
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时刷新浏览器有什么意义
只需更新数据库中的值,就不会向前端发送新消息。更新数据库后,您需要通过 django 频道发送“更新”消息。到目前为止,您唯一一次发送分析数据是在您连接到服务器时。
我试过这个方法Whosebug但是没用
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时刷新浏览器有什么意义
只需更新数据库中的值,就不会向前端发送新消息。更新数据库后,您需要通过 django 频道发送“更新”消息。到目前为止,您唯一一次发送分析数据是在您连接到服务器时。