SignalR: Hub OnConnected não chamado se nenhum método do cliente

Eu estou escrevendo um jogo no SignalR. A idéia é que você se conecte com o seu laptop, que será usado como "display" e, em seguida, você se conecta com o seu smartphone e que será usado como "joystick". Toda a configuração funciona muito bem.

Agora que tudo funciona, decidi refatorar o código. Percebi que a relação entre o joystick e a tela é de um jeito (a tela nunca precisa enviar informações de volta ao joystick). Por isso, decidi que não precisava de nenhum sinalR funções do cliente invocáveis ​​no joystick (por exemplo, não há uso paragameHub.client.joyStickMethod() no joystick js.

Foi então que descobri algo estranho

Acontece que o método hubpublic override Task OnConnected() que eu sobrescrevo para lidar com os diferentes tipos de clientes (displays e joysticks) não é invocado a menos que eu defina ummyHub.client.clientSideMethod(). Aqui está o exemplo que estou lidando:

        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

Você vê esse método do lado do cliente vazio? Essa é a razão pela qualOnConnected é chamado no lado do servidor. Se eu remover essa linha de código, ela não será chamada.

        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

Isso não funcionará, já que não há nenhum método do lado do cliente no Hub. Eu provavelmente posso adicionar umRegistrateJoystickmétodo no Hub e chamar isso, mas acho que o comportamento é inesperado. Minha pergunta é, portanto:

Existe uma maneira de "conectar" manualmente ao hub, para que oOnConnect método será chamado?

questionAnswers(2)

yourAnswerToTheQuestion