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.

¿Puede el cliente .Net comunicarse con el servicio de Azure SignalR?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown

Soy nuevo en el uso del servicio Azure SignalR y estoy un poco confundido acerca de algo.

La cosa es que estoy usando un cliente .Net 4.8 y un cliente de javascript con un hub alojado por sí mismo.

Para el cliente .net, este es el código:

using Microsoft.AspNet.SignalR.Client;
{
    public class SignalRHub : ISignalRHub
    {
        private const string HubName = "Hub";
        private readonly IHubProxy hub;
        private readonly HubConnection connection;

    public SignalRHub(string signalRUrl)
    {
        connection = new HubConnection(signalRUrl);
        connection.StateChanged += Connection_StateChanged;
        hub = connection.CreateHubProxy(HubName);
        connection.Start().Wait();
    }
    private void Connection_StateChanged(StateChange obj)
    {
        ...
    }

    public void Refreshed(string userId, string mId)
    {
                hub.Invoke("refreshed", uId, mId);
    }
}


}

la signalRUrl es así “http://localhost:8081/signalr”

El archivo de inicio de hub se implementa de la siguiente manera:

“`public void Configuration(IAppBuilder app)
{
var hubConfiguration = new HubConfiguration
{
EnableDetailedErrors = true,
};

<pre><code> // Any connection or hub wire up and configuration should go here
app.MapSignalR("/signalr", hubConfiguration);
</code></pre>

}

Y este es el archivo de hub

using Microsoft.AspNet.SignalR;

{
public class Hub: Hub
{
public void Refreshed(string userId, string mId )
{
Guid userIdAsGuid;
if (Guid.TryParse(userId, out userIdAsGuid))
{
Clients.Group(userId).Refresh(mId);
}
}

<pre><code>public void JoinGroup(string groupName)
{
Groups.Add(Context.ConnectionId, groupName);
}
</code></pre>

}

}
“`

El código anterior funciona perfectamente y no tengo ningún problema con él.
Mi problema es cuando quise migrar a Azure SignalR service. Utilicé este documento https://learn.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-dotnet

Cambié el código de inicio a

app.MapAzureSignalR(this.GetType().FullName, hubConfiguration);

Y agregué los endpoints, y para el cliente javascript, lo actualicé a jquery.signalR-2.4.1 y funciona bien (se crean sockets)

Sin embargo, para el lado del cliente .net no hubo indicación de si cambiar y si es realmente compatible con él.

Entonces, lo que tengo actualmente es una aplicación medio funcionando: el lado de javascript funciona y envía solicitudes al servicio Azure Signalr (puede utilizar JoinGroup), sin embargo, no hay respuesta y el lado del cliente .net no parece comunicarse con el hub (en la plataforma de servicio Azure SignalR no se agregan nuevos clientes)

Como soy nuevo en este concepto, creo que podría haber perdido algunos puntos probablemente debido a un problema de compatibilidad, así que estaré agradecido por cualquier aclaración sobre este tema.

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que tienes una buena comprensión del código y de la configuración que necesitas para utilizar el servicio Azure SignalR. Es posible que te falte algo en la configuración que esté causando que el cliente .NET no pueda comunicarse con el hub.

    Algunas cosas que debes verificar:

    Asegúrate de que el cliente .NET esté utilizando la URL correcta para el servicio Azure SignalR.
    Asegúrate de que el cliente .NET esté utilizando la versión correcta de la biblioteca SignalR client.
    Asegúrate de que el cliente .NET esté utilizando la versión correcta de HubProxy.
    Asegúrate de que el cliente .NET esté utilizando la versión correcta de HubConnection.
    Asegúrate de que el cliente .NET esté utilizando la versión correcta de HubConfiguration.

    Si todavía tienes problemas, es posible que desees considerar publicar tu pregunta en Stack Overflow o en los foros del servicio Azure SignalR para obtener más ayuda.

Comments are closed.