首先,我应该说我对django和Web开发一般还很陌生,所以很可能我做错了事。
基本上,我有一台服务器(中间件),该服务器应接受json中包含一些数据的post http请求,然后检查我的数据库(位于另一台服务器上)是否可用,然后将其发送到该服务器(它实际上是一个群集)(如果不是),则通过websocket连接将其保存在本地数据库中。 在这里,我只是想让服务器以我希望它们彼此通信的方式进行通信。 因此,据我所知,我应该在中间件服务器上创建一个视图,如下所示:
from rest_framework_mongoengine import viewsets
# some other imports
class DataView(viewsets.ModelViewSet):
def create(self, request):
channel_layer = layers.get_channel_layer()
async_to_sync(channel_layer.send)
(
'test_channel',
request.data
)
return Response(
status=status.HTTP_200_OK
)
但是我不太了解集群中应该包含什么。从理论上讲,集群应该通过websockets从中间件服务器接收传入的数据并将其保存,然后再通过ws协议向客户端发出一些信息。我想了解的是如何接受来自中间件的传入数据。 群集应侦听来自中间件服务器的数据。因此,那里必须有一个消费者:
class DataConsumer(WebsocketConsumer):
def connect(self):
self.channel = self.scope['url_route']['kwargs']['channel']
self.accept()
def disconnect(self):
# here goes some code managing the termination of connection
pass
def receive(self, data):
# I don't understand what should be here.
在我的 routing.py 中,我有以下代码:
websocket_urlpatterns = [
path('ws/channel/test_channel', consumers.DataConsumer),
]
因此,首先我必须以某种方式激活(打开)此test_channel,然后使其接受来自发送服务器的数据。