2017-11-27 11 views
0

私は自分のゲームにプレーヤーの位置をリアルタイムで処理するためにsignalRを実装し、それをすべての接続されたクライアントにブロードキャストしようとしています。.done以外の関数を呼び出すときにSignalRがサーバーハブメソッドを呼び出さない

しかし、私が$ .connection.hub.start()。done()の直後に呼び出さない限り、サーバーハブメソッドを呼び出すクライアント関数はサーバーに到達しません。

$.connection.hub.start().done(function() { 
    $.connection.playerHub.server.updatePlayerPosition(playerObj) 
}); 

しかし、私が作成した場合:これは正しく、サーバーハブ方式のUpdatePlayerPositionを呼び出しますが、私はの.doneにこのメソッドを直接呼び出す必要はありません

...私はあなたに例を挙げましょう私のメインのgameEngineオブジェクトの変数とそれを後で呼び出す、IEは、プレーヤーが移動するたびに、何も起こりません。

$.connection.hub.start().done(function() { 
     gameEngine.updatePlayerPosition = function() { 
      $.connection.playerHub.server.updatePlayerPosition(playerObj) 
      //playerObj is a global variable 
     } 
}); 

if (player.isMoving) { 
    gameEngine.updatePlayerPosition(); 
} 

gameEngine.updatePlayerPositionを呼び出すには、()正しい関数を押すと、signalr.jsのすべてを通過するが、サーバー上のブレークポイントがヒットしないん。ここで

はsignalRの

using Microsoft.AspNet.SignalR; 
using RPGGameCS.Models.Player; 

namespace RPGGameCS 
{ 
    public class PlayerHub : Hub 
    { 
     public void UpdatePlayerPosition(IPlayer player) 
     { 
      Clients.All.updatePlayerPosition(player); 
     } 
    } 

} 

すべての例私がしました(私は最初に行くの通信を取得したい、私はまだハブのプレーヤーを更新するための機能が追加されていない)ハブコードですこれらのサーバー呼び出しをクリックイベントにバインドすることを見ましたが、これは実行したくありません。これは可能であるはずですが、これまでに試したことはありませんでした。私が間違っていることはありますか?あるいは、singalR関数をこのように委譲することはできませんか?

EDIT 1 ***:私はハブメソッドに送信しているプレーヤーオブジェクトと関係があるようです。プレーヤーのオブジェクトをnullにすると、通信は正常に動作しているように見えます。しかし、実際のプレーヤーオブジェクトを送信すると、ブレークポイントは決して打たれません。

答えて

0

メソッドの署名が一致している必要があります。

あなたのハブにはパラメータIPlayerがあり、クライアントではこのパラメータを設定しません。 gameEngine.updatePlayerPosition();と一致しませんpublic void UpdatePlayerPosition(IPlayer player)

たとえば、gameEngine.updatePlayerPosition(); signalrは、名前とパラメータに従って、接続されたハブ上のメソッドを検索します。場合は、私はあなたがログにこれを見つけるべきだと思う方法を見つけることはありません。

テストのためにログを有効にします。

$.connection.hub.logging = true; 
$.connection.hub.start(); 

https://docs.microsoft.com/en-us/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing

+0

ありがとうございました!!私はそれを逃した方法を知らない – awweather

関連する問題