与Django Channels的React本机Websocket连接已打开,但没有消息通过

Rya*_*ent 5 django websocket react-native django-channels

我有一个与Django频道进行通讯的React Native应用(android)。通过连接到我的开发服务器时ws,一切正常。但是,当我尝试wss使用相同的代码连接到远程服务器时,没有任何反应。

套接字连接显示为OPEN。我什至收到"connected"从服务器发送到我的应用程序的第一条消息:

class RGConsumer(AsyncWebsocketConsumer):
    rooms = []

    async def connect(self):
        self.rooms = []
        await self.join_room('all')
        await self.accept()
        await self.send(text_data=json.dumps({'event': 'connected'}))

    async def join_room(self, room_name):
        if room_name not in self.rooms:
            self.rooms.append(room_name)
            await self.channel_layer.group_add(
                room_name,
                self.channel_name
            )
Run Code Online (Sandbox Code Playgroud)

问题在于,除了第一个消息之外,没有其他消息通过。例如,无论我通过此函数发送的内容如何,​​都不会被应用程序接收:

def send_to_all(event, data=None):
    message = {'type': 'channel_event', 'message': {'event': event, 'data': data}}
    channel_layer = get_channel_layer()
    async_to_sync(channel_layer.group_send)(
        'all',
        message
    )
Run Code Online (Sandbox Code Playgroud)

以相同的方式,当我调用websocket.send我的应用程序时,receive根本不会触发我的使用者的功能。

再一次,这在我的本地服务器上工作得很好,所以我认为代码是正确的。只有将应用程序连接到生产wss服务器时,它才会停止工作(除了connected收到第一条消息外)

此外,websocket.onclose如果我决定重新启动生产服务器,则该函数也不会被调用。

是否有其他设置可以允许我正确丢失与wss服务器的正确连接?

让我知道是否需要更多代码。我不确定还需要什么。

Rya*_*ent 3

我设法通过为移动 WebSocket 连接创建不同的通道路由来解决这个问题。

/ws/对于我的网站和/mobile-ws/应用程序)

我仍然不知道为什么使用与我的网站相同的端点是一个问题,或者为什么它适用于开发但不适用于生产。我很乐意接受比这更好的答案。