使用渠道推送实时HTML内容更新

时间:2019-11-02 03:08:19

标签: javascript django websocket django-channels

我正在尝试为所有连接的用户修改页面上的HTML内容。当前,当使用使用者发送消息时,它仅将消息发送到启动了用于更新的初始消息的实例(即,如果用户按下通过发送WebSocket事件更改HTML内容的按钮,则仅其实例的内容页面已更改)。这是我目前的消费者:

class ScoreConsumer(AsyncConsumer):
    async def websocket_connect(self, event):
        print("connected ", event)
        await self.send({
            'type': 'websocket.accept'
        })

    async def websocket_receive(self, event):
        print("receive ", event)
        data = event.get('text', None)
        print(data)
        if data:
            loaded_data = json.loads(data)
            await self.send({
                'type': 'websocket.send',
                'text': loaded_data['message']
            })

    async def websocket_disconnect(self, event):
        print("disconnected ", event)

这是初始化和处理消息的JavaScript(省略不必要的部分)

var loc = window.location;

        var wsStart = 'ws://'
        if (loc.protocol == 'https:'){
            wsStart = 'wss://';
        }

        var endpoint = wsStart + window.location.host + loc.pathname;
        var socket = new WebSocket(endpoint);
        console.log(endpoint);

        socket.onmessage = function(e){
            console.log("Got websocket message " + e.data);
            var data = e.data;
            console.log(data);
            if (data == 'connected') {
                document.querySelector('#bluescore').innerHTML = "User Connected";
            } else {
                document.querySelector('#redscore').innerHTML = data;
            }
        }

        document.querySelector('#test-button').onclick = function(e) {
            var message = "Yee";
            console.log("Help");
            socket.send(JSON.stringify({
                'message': message
            }))
        }

两个实例当前都没有收到对方发送的任何消息。

0 个答案:

没有答案