Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django中的群聊_Javascript_Python_Django_Websocket_Django Channels - Fatal编程技术网

Javascript Django中的群聊

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

我正在尝试用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_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已连接,但当我发送消息时,什么也没发生。你对此有什么想法吗?