3

我一直试图了解 Django 的频道,但我无法将我的消息发送到我的 websocket。

这是我的consumers.py

import logging
from django.contrib.sites.models import Site
from django.utils import timezone
from channels import Group
from .models import *
import json

def send_free(message):
    try:
        pi = PInformation.objects.get(
            pk=message.content.get('pk'),
        )
    except Parkplatzinformationen.DoesNotExist:
        logging.error("PI not found!")
        return

    try:
        message.reply_channel.send({
        "text": 1,
    })
    except:
        logging.exception('Problem sending %s' % (pi.name))

我的routing.py

from channels.routing import route

from RESTAPI.consumers import send_free

channel_routing = [
    route('send-free',send_free),
]

我得到了错误AttributeError: 'NoneType' object has no attribute 'send'。然而,它确实获得了 PInformation 对象,因此它确实“有点”工作。我在保存对象后立即调用它。

你能给我一些提示吗?入门指南就像我尝试的那样使用它。

4

1 回答 1

1

我假设你是这样从你的角度打电话"send-free"的......

Channel('send-free').send({'message': 'your message'})

然后send_free没有message.reply_channel...

换句话说,一旦WebSocket packet is sent to us by a clientthen 消息从中获取reply_channel属性。这将用于将消息回复给客户端......(可能是前端)

所以你真的要发送消息...?然后再次使用消费者发送...

于 2016-07-24T18:03:20.197 回答