Javascript Django中的群聊
我正在尝试用Django创建带有频道的群聊。在下面你可以看到我的代码。提交消息后,什么也没有发生。也可以空着登录。如何使代码工作 路由.py:Javascript Django中的群聊,javascript,python,django,websocket,django-channels,Javascript,Python,Django,Websocket,Django Channels,我正在尝试用Django创建带有频道的群聊。在下面你可以看到我的代码。提交消息后,什么也没有发生。也可以空着登录。如何使代码工作 路由.py: channel_routing = [ route('websocket.connect', ws_connect, path=r'^account/dashboard/projects/(?P<project_code>[0-9a-f-]+)/chat/$'), route("websocket.receive", ws_r
channel_routing = [
route('websocket.connect', ws_connect, path=r'^account/dashboard/projects/(?P<project_code>[0-9a-f-]+)/chat/$'),
route("websocket.receive", ws_receive),
route("websocket.disconnect", ws_disconnect),
]
# Connected to websocket.connect
@channel_session
def ws_connect(message):
query = parse.parse_qs(message['query_string'])
if 'username' not in query:
return
room = message.content['path'].strip("/")
Group('chat-%s' % room).add(message.reply_channel)
message.channel_session['room'] = room
message.channel_session['username'] = query['username'][0]
message.reply_channel.send({"accept": True})
# Connected to websocket.receive
@channel_session
def ws_receive(message):
if 'username' not in message.channel_session:
return
Group('chat-%s' % message.channel_session['room']).send({
'text': json.dumps({
'message': message.content['text'],
'username': message.channel_session['username']
})
})
# Connected to websocket.disconnect
@channel_session
def ws_disconnect(message):
Group("chat-%s" % message.channel_session['room']).discard(message.reply_channel)
{% block content %}
<h1>{{ room.code }}</h1>
<div id="msgArea"></div>
<div>
<textarea name="message" id="message" cols="30" rows="10"></textarea>
</div>
<button id="btnSubmit">Submit</button>
{% endblock content %}
{% block script %}
<script>
$(document).ready(function(){
var msgArea = $('#msgArea')
var elementMessage = $('#message')
var webSocket = new WebSocket('ws://' + window.location.host + '/account/dashboard/projects/(?P<{{ room.project_id }}>[0-9a-f-]+)/chat/');
webSocket.onmessage = function(message) {
var data = JSON.parse(message.data)
msgArea.append('<p><strong>'+ data.username + '</strong>: ' + data.message + '</p>')
}
$('#btnSubmit').click(function(e) {
webSocket.send(elementMessage.val())
})
})
</script>
{% endblock script %}
模板:
channel_routing = [
route('websocket.connect', ws_connect, path=r'^account/dashboard/projects/(?P<project_code>[0-9a-f-]+)/chat/$'),
route("websocket.receive", ws_receive),
route("websocket.disconnect", ws_disconnect),
]
# Connected to websocket.connect
@channel_session
def ws_connect(message):
query = parse.parse_qs(message['query_string'])
if 'username' not in query:
return
room = message.content['path'].strip("/")
Group('chat-%s' % room).add(message.reply_channel)
message.channel_session['room'] = room
message.channel_session['username'] = query['username'][0]
message.reply_channel.send({"accept": True})
# Connected to websocket.receive
@channel_session
def ws_receive(message):
if 'username' not in message.channel_session:
return
Group('chat-%s' % message.channel_session['room']).send({
'text': json.dumps({
'message': message.content['text'],
'username': message.channel_session['username']
})
})
# Connected to websocket.disconnect
@channel_session
def ws_disconnect(message):
Group("chat-%s" % message.channel_session['room']).discard(message.reply_channel)
{% block content %}
<h1>{{ room.code }}</h1>
<div id="msgArea"></div>
<div>
<textarea name="message" id="message" cols="30" rows="10"></textarea>
</div>
<button id="btnSubmit">Submit</button>
{% endblock content %}
{% block script %}
<script>
$(document).ready(function(){
var msgArea = $('#msgArea')
var elementMessage = $('#message')
var webSocket = new WebSocket('ws://' + window.location.host + '/account/dashboard/projects/(?P<{{ room.project_id }}>[0-9a-f-]+)/chat/');
webSocket.onmessage = function(message) {
var data = JSON.parse(message.data)
msgArea.append('<p><strong>'+ data.username + '</strong>: ' + data.message + '</p>')
}
$('#btnSubmit').click(function(e) {
webSocket.send(elementMessage.val())
})
})
</script>
{% endblock script %}
{%block content%}
{{room.code}
提交
{%endblock内容%}
{%block script%}
$(文档).ready(函数(){
var msgArea=$(“#msgArea”)
var elementMessage=$(“#message”)
var webSocket=newwebsocket('ws://'+window.location.host++'/account/dashboard/projects/(?P[0-9a-f-]+)/chat/);
webSocket.onmessage=函数(消息){
var data=JSON.parse(message.data)
msgArea.append(“”+data.username+”:“+data.message+”)
}
$('#btnsupmit')。单击(函数(e){
send(elementMessage.val())
})
})
{%endblock脚本%}
您正在运行Django服务器和Channel服务器吗?@Tom确定,两台服务器都在运行。我看到那一页了。Redis服务器说websocker已连接,但当我发送消息时,什么也没发生。你对此有什么想法吗?