私はSignalRでゲームを作成しています。アイデアは、ノートパソコンに接続して「ディスプレイ」として使用し、スマートフォンに接続して「ジョイスティック」として使用することです。セットアップ全体がうまく機能します。SignalR:クライアントメソッドがない場合、Hub OnConnectedは呼び出されません
すべての機能が完了したので、コードをリファクタリングすることにしました。私は、ジョイスティックとディスプレイの関係が1つの方法であることを認識しました(ディスプレイはジョイスティックに情報を戻す必要はありません)。したがって、私は、私は(ジョイスティックJSでgameHub.client.joyStickMethod()
のための使用はありません例えばジョイスティック上の任意のsignalR呼び出し可能なクライアント機能を必要としなかったことを決めた。
それは、私はそれがあることが判明し
奇妙な何かを発見されました私はmyHub.client.clientSideMethod()
を定義しない限り、ハブは、私は、クライアント(ディスプレイとジョイスティック)の異なる種類に対処するためにオーバーライドする方法public override Task 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
サイドメソッド?そのため、サーバー側で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
メソッドが呼び出されるように手動でハブに接続する方法はありますか?
お返事ありがとうございます。私はあなたが言っていることの論理を理解していますが、同時に、クライアントが呼び出し可能なメソッドを持っているかどうかにかかわらず、サーバー側のメソッド "OnConnect"の名前は私には聞こえると思います。 – pardahlman
確かに、それはどのように動作します。メソッドはOnConnectedです。 – davidfowl
混乱を避けるために、pardahlmanが命名されていると少し直感的ではないと言ったことをエコーするのは、文書でかなり明示的に呼び出す価値があるかもしれません。 –