こんにちは私はグループにいる私の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を参照してください