Saltar al contenido

¿Cómo usar SignalR para enviar datos a un usuario específico?

No olvides que en las ciencias informáticas un problema suele tener más de una resoluciones, no obstante mostramos lo más óptimo y eficiente.

Solución:

Si usa el servicio Azure SignalR:

module.exports = async function (context, req) 
    context.bindings.signalRMessages = [
        // message will only be sent to this user ID
        "userId": "userId1",
        "target": "newMessage",
        "arguments": [ req.body ]
    ];
;

Un ID de usuario podría asignarse a múltiples conexiones de clientes (por ejemplo, dispositivos), tenga en cuenta eso.

Si necesita enviar mensajes a varios usuarios o está alojando SignalR usted mismo:

Los grupos son la forma más fácil de enviar mensajes a un subconjunto de usuarios. Si desea enviar un mensaje a un determinado usuario, puede utilizar el userId como el nombre del grupo.

Decidir qué usuario pertenece a qué grupo es una característica del lado del servidor, por lo que debe escribir algo de código.

module.exports = async function (context, req) 
  context.bindings.signalRGroupActions = [
    "userId": req.query.userId,
    "groupName": "myGroup",
    "action": "add"
  ];
;

Usando Azure SignalR Service y el código del lado del cliente de la pregunta, pude hacer que funcionara. Usé la siguiente función de Azure para negociar la conexión:

module.exports = async function (context, req, connectionInfo) 
  context.res.body = connectionInfo;
  context.done();
;


  "disabled": false,
  "bindings": [
    
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    ,
    
      "type": "http",
      "direction": "out",
      "name": "res"
    ,
    
      "type": "signalRConnectionInfo",
      "name": "connectionInfo",
      "userId": "userId",             // <----- IMPORTANT PART!
      "hubName": "chat",
      "direction": "in"
    
  ]

Así como otra función para enviar un mensaje a un usuario específico:

module.exports = async function (context, req) 
  const messageObject = req.body;
  return 
    "target": "newMessage",
    "userId": messageObject.userId,
    "arguments": [ messageObject.message]
  ;
;


  "disabled": false,
  "bindings": [
    
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "post"
      ]
    ,
    
      "type": "http",
      "direction": "out",
      "name": "res"
    ,
    
      "type": "signalR",
      "name": "$return",
      "hubName": "chat",
      "direction": "out"
    
  ]

Te mostramos reseñas y valoraciones

Si posees alguna desconfianza y capacidad de reformar nuestro ensayo te mencionamos ejecutar una crítica y con deseo lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *