es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamada para invocar el gestor de mensajes (Django Channels)

Tengo esta porción de código en mi app/views.py (para enviar señales al grupo a través del websocket justo antes de publicar un nuevo objeto en mi base de datos):

from django.core import serializers
import channels.layers
from .consumers import serialize_games
from asgiref.sync import async_to_sync



def send_game_update(event):
    '''
    Función de devolución de llamada para enviar un mensaje al navegador
    '''
    print('@call_back:into it')
    message = event['message']
    channel_layer = channels.layers.get_channel_layer()
    # Enviar mensaje al WebSocket
    async_to_sync(channel_layer.send)(text_data=json.dumps(
        message
    ))
    print('@call_back: messages sent to lobby')

def send_update_signal():

    games = serialize_games()
    channel_layer = channels.layers.get_channel_layer()
    # Enviar nueva información de juego al Lobby
    async_to_sync(channel_layer.group_send)('Lobby', { 'type': 'send_game_update', 'message': games })
    print('@receiver: just before messages sent to lobby')

Y django devuelve:

ValueError: No hay controlador para el tipo de mensaje send_game_update
Excepción dentro de la aplicación: No hay controlador para el tipo de mensaje send_game_update

¿Eso es un problema de espacio de nombres?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No, esto no es un problema de espacio de nombres. El mensaje de error indica que no hay ningún controlador registrado en el archivo consumers.py para el tipo de mensaje “send_game_update”. Esto sugiere que el tipo de mensaje puede no estar correctamente definido o registrado en el archivo consumers.py o que puede haber un error tipográfico en el nombre del tipo de mensaje. Para resolver el error, asegúrese de que el tipo de mensaje esté correctamente definido y registrado en el archivo consumers.py y que el nombre coincida exactamente con el nombre utilizado en la función send_update_signal en views.py.

Comments are closed.