SignalR: Hub OnConnected не вызывается, если нет методов клиента

Я пишу игру в SignalR. Идея заключается в том, что вы подключаетесь к ноутбуку, который будет использоваться какдисплей» а затем вы подключитесь к вашему смартфону, и это будет использоваться какджойстик", Вся установка работает очень хорошо.

Теперь, когда все это работает, я решил провести рефакторинг кода. Я понял, что связь между джойстиком и дисплеем односторонняя (дисплей не должен отправлять информацию обратно на джойстик). Поэтому я решил, что мне не нужны никакие вызываемые клиентские функции signalR на джойстике (например, дляgameHub.client.joyStickMethod() в джойстике

Именно тогда я обнаружил что-то странное

Оказывается, что метод хабаpublic override Task OnConnected() то, что я переопределяю для работы с различными типами клиентов (дисплеями и джойстиками), не вызывается, если я не определюmyHub.client.clientSideMethod(), Вот'Это пример, который яЯ имею дело с:

        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

Вы видите этот пустой метод на стороне клиента? Тот'причина почемуOnConnected вызывается на стороне сервера. Если я удалю эту строку кода, она не будет вызвана.

        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

Это не будет работать, так как на хабе нет метода на стороне клиента. Я, наверное, могу добавитьRegistrateJoystickметод на хабе и так называем, но я думаю, что поведение неожиданное. Поэтому мой вопрос:

Есть ли способ вручнуюподключения» в центр, так чтоOnConnect метод будет вызван?

Ответы на вопрос(2)

Ваш ответ на вопрос