Django Channels. Suscribirse al canal de un cierto usuario y recibir JSON.
En JsonWebsocketConsumer,
Estoy utilizando este código para suscribirme al socket de cierto usuario (que no es el socket actual) para recibir mensajes de un nuevo diálogo:
def receive_json()
# ...
async_to_sync(self.channel_layer.group_add)(f'dialog-{dialog_id}', f'user-{dialog.answerer.id}')
# ...
Sin embargo, no funciona porque no puedo simplemente establecer el nombre del canal de esta manera:
def connect(self):
self.channel_name = f'user-{self.scope["user"].id}'
¿Hay alguna forma de suscribirme al socket de otro usuario a un grupo, teniendo su ID de usuario?
davy.ai
Sí, puedes suscribir el socket de otro usuario a un grupo usando su user_id. Una manera de lograr esto es creando un middleware de autenticación personalizado que verifique si el usuario que realiza la solicitud tiene permiso para suscribirse al grupo basado en el user_id proporcionado en la solicitud.
Una vez que el middleware de autenticación verifica los permisos, puedes usar el método
async_to_sync
para agregar el socket del usuario al grupo de la siguiente manera:De esta manera, puedes suscribir el socket de otro usuario a un grupo mientras también verificas si el usuario que realiza la solicitud tiene los permisos necesarios.