我正在使用从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'在控制台中工作,为什么不在模板中工作?