Django通道socket.send()不发送数据

时间:2017-03-22 05:14:12

标签: javascript python django sockets

我正在使用从Django频道构建的网络套接字,我有一个小的Javascript函数,当我在我的模板中添加时,应该通过名为urls.py的{​​{1}}类型文件将数据发送到网络套接字到名为routing.py的视图类型文件中。当我在浏览器上渲染这个模板并转到浏览器控制台并点击consumers.py时,它会回复数据,但无论如何我在代码中都有这个命令,为什么在页面加载时没有执行?我的代码应该更好地解释方案

我的模板:

socket.send("hi")

Routing.py:

{% block javascript %}
{{ block.super }}

var socket = get_websocket('/echo2/');    //Echo2 is the route in route.py
socket.onmessage = function(e) {
    console.log( e.data );
}                                                                                                                                                     
socket.send('hi');    //This line isn't being executed, why?

{% endblock javascript %}

Consumers.py

from channels.routing import route
channel_routing = [
route("websocket.receive", consumers.ws_echo2_message, path='^/echo2/$'),
]

当我进入我的浏览器控制台并说`socket.send('hi')时,它给了我这个:

def ws_echo2_message( message ):

    message.reply_channel.send({
        'text': json.dumps({
            'message': message.content['text'],
            'dave': 'hi'
        })
    },
                               immediately = True)

    time.sleep(2)

    message.reply_channel.send({
        'text': message.content['text'],
    },
                               immediately = True)

    time.sleep(2)

    message.reply_channel.send({
        'text': message.content['text'],
    },
                               immediately = True)

那么,如果`socket.send'在控制台中工作,为什么不在模板中工作?

0 个答案:

没有答案