SignalR: Hub OnConnected no llamado si no hay métodos de cliente

Estoy escribiendo un juego en SignalR. La idea es que se conecte con su computadora portátil, que se usará como "pantalla" y luego se conectará con su teléfono inteligente y que se usará como "joystick". Toda la configuración funciona muy bien.

Ahora que todo funciona, decidí refactorizar el código. Me di cuenta de que la relación entre el joystick y la pantalla es de una manera (la pantalla nunca necesita enviar información al joystick). Por lo tanto, decidí que no necesitaba ninguna función de invocación de cliente de signalR en el joystick (por ejemplo, no hay uso paragameHub.client.joyStickMethod() en el joystick js.

Fue entonces cuando descubrí algo extraño.

Resulta que el método de hubpublic override Task OnConnected() que anulo para tratar con los diferentes tipos de clientes (pantallas y joysticks) no se invoca a menos que defina unmyHub.client.clientSideMethod(). Aquí está el ejemplo con el que estoy tratando:

        var gameHub = $.connection.gameHub;
        gameHub.client.connection();
        $("#joystick").joystick({
            hub: gameHub
        });

        gameHub.client.activateJoystick = function () { };
        $.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
        $.connection.hub.start();   //this will invoke on connected

¿Ves ese método del lado del cliente vacío? Esa es la razón por quéOnConnected se llama en el lado del servidor. Si elimino esa línea de código, no se llamará.

        var gameHub = $.connection.gameHub;
        gameHub.client.connection();
        $("#joystick").joystick({
            hub: gameHub 
        });

        //gameHub.client.activateJoystick = function () { };
        $.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
        $.connection.hub.start();   //this will invoke on connected

Esto no funcionará, ya que no hay un método del lado del cliente en el concentrador. Probablemente pueda agregar unRegistrateJoystickMétodo en el Hub y llamar a eso, pero creo que el comportamiento es inesperado. Mi pregunta es por lo tanto:

¿Hay alguna manera de "conectarse" manualmente al hub, para que laOnConnect ¿Se llamará método?

Respuestas a la pregunta(2)

Su respuesta a la pregunta