5

こんにちは私はグループにいる私のsignalRクライアントが送信された情報を受け取らないという問題を抱えています。

私はこれを2つの方法で試しましたが、どちらも機能しません。

ロードされたWebページで、クライアントはサーバーを呼び出してグループ名を取得し、ハブのメソッドを呼び出してそのグループのユーザーに参加します。

JavaScript.....。

        var connectionOpen = false;
        var myHub;
        $(function () {
            myHub = $.connection.myHub;
            myHub.client.showMessage = alertMessage;
            $.connection.hub.start(function () {
                connectionOpen = true;
                joinGroup();
            });
        });

        function joinGroup() {
            $.ajax({
                url: 'Controller/GetGroupName,
                type: 'POST',
                success: function (group) {
                    if (connectionOpen == true)
                        tileHub.server.joinGroup(group);
                }
            });
        }

function alertMessage(string value){
alert(value);
}

コントローラ

[HttpPost]
public JsonResult GetGroupName()
{
    return Json("Foo");
}

myHub

public void JoinGroup(string groupName)
{
    Groups.Add(Context.ConnectionId, groupName);
}

コードを何度もステップスルーしましたが、接続してグループに参加していることがわかりますが、グループに送り返そうとしても何も起こりません。

コントローラーからこれを使ってグループに送っています

GlobalHost.ConnectionManager.GetHubContext<myHub>().Clients.Group("Foo").showMessage("Hello");

これは私が試した2番目の方法です。ハブからグループに送信しようとしましたが、それでも喜びはありません。

どんな助けでも大歓迎です...

更新 これはDavidFowlerのおかげで修正されました...。

これは、HubName属性を使用してハブに別の名前を付け、次にlongPollingトランスポートを使用してsignalRを付けていたためのバグでした。属性を削除すると、これは作業を知ることができます。修正も提供されていますhttps://github.com/SignalR/SignalR/issues/1039を参照してください

4

2 に答える 2

3

いくつかのこと:

  1. この投稿の「グループへの再参加」セクションを必ずお読みください。http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx
  2. サーバーからグループ名を把握するために、本当にajax呼び出しを行う必要がありますか?ページに直接レンダリングすることはできませんか?
  3. どこでもグループ名として「Foo」をハードコーディングすると失敗しますか?
于 2012-11-23T22:37:18.287 に答える
0

dfowlerの回答で見つかりました:https ://github.com/SignalR/SignalR/issues/1039 <コメントに表示されませんでした。

解決策は次のとおりです。ハブからHubName属性を削除します。

于 2013-04-23T08:49:28.543 に答える