2016-09-13 32 views
1

私はチャットボードを作成していますが、signalRを使用して、ステータス/投稿に新しいコメントが追加されたときにお知らせします。signalR connection.hub関数が反応コンポーネント内で呼び出されていません

私はReactを使用していますが、ハブ関数のイベントリスナーをさまざまなコンポーネントに追加しようとしましたが、一部のコンポーネントでは動作しますが、他のコンポーネントでは機能しません。

これはハブです:私が持っている

commentUpdateListener: function() { 
    console.log("in the comment update listener!"); 
    var commentHub = $.connection.commentHub; 

    commentHub.client.updateNewComments = function (postId) { 
     console.log("updateNewComments called!"); 
    }; 

    $.connection.hub.start(); 
}, 

componentDidMount: function() { 
    this.commentUpdateListener(); 
}, 

そして、これはイベントリスナーである:

public class CommentHub : Hub 
{ 
    public void UpdateComments(int postId) 
    { 
     try 
     { 
      var context = GlobalHost.ConnectionManager.GetHubContext<CommentHub>(); 
      context.Clients.All.updateNewComments(postId); 
     } 
     catch (Exception ex) 
     { 
      Log.Error(ex.Message); 
     } 
    } 
} 

私はcomponentDidMound機能にイベントリスナーを呼び出しますポスト/ステータス、壁/ニュースフィードのコンポーネント、そして "c"のコンポーネントを持っていますコメント欄が表示されている壁のステータスごとに「省略欄」が表示されます。

イベントリスナーを壁コンポーネントまたはポストコンポーネントに配置すると、それが機能し、 'updateNewComponent'関数が呼び出されますが、「コメントボックス」コンポーネントに配置すると機能しません。

まだ「コメント更新リスナーで!」私はイベントリスナーをどこに置いてもログに記録されますが、ハブ関数は常に呼び出されるわけではなく、イベントリスナーがどのような反応コンポーネントに配置されるかは重要です。

$ .connection.commentHubは存続しませんか?それは閉じていますか? 関数が常に呼び出されるとは限りませんか?

答えて

0

あなたは、このようなハブの接続を開始する前に、ログを有効にすることができます。

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

あなたには、いくつかの切断が表示された場合は、それが閉じたときに、接続を再起動しようとすることができます:

$.connection.hub.disconnected(function() { 
    setTimeout(function() { 
     $.connection.hub.start(); 
    }, 5000); // Restart connection after 5 seconds. 
}); 

さらに読書:Understanding and Handling Connection Lifetime Events in SignalR

関連する問題