ASP.NET SignalR では、今まで Hub クラスに実装されていたプロパティが微妙に異なっています。
特に大きい変更点としては Clients プロパティの型が dynamic から HubConnectionContext 型に変わりました。それによって今までと記述方法が多少変わり、そして今までよりも柔軟なプッシュが可能となりました。
0.5.3
// 全てのクライアントへブロードキャスト Clients.ReceiveMessage(message); // 特定のクライアントへのプッシュ Clients[connectionId].ReceiveMessage(message); // 特定のグループへのブロードキャスト Clients[groupName].ReceiveMessage(message); // メソッドを呼び出したクライアントへプッシュ Caller.ReceiveMessage(message);
1.0.0 alpha 1
// 全てのクライアントへブロードキャスト Clients.All.ReceiveMessage(message); // 特定のクライアントへのプッシュ Clients.Client(connectionId).ReceiveMessage(message); // 特定のグループへのブロードキャスト Clients.Group(groupName).ReceiveMessage(message); // メソッドを呼び出したクライアントへプッシュ Clients.Caller.ReceiveMessage(message); // 新規:特定のクライアントを除いた全てへブロードキャスト Clients.AllExcept(connectionId).ReceiveMessage(message); // 新規:呼び出したクライアント以外へブロードキャスト Clients.Others.ReceiveMessage(message); // 新規:特定のグループ以外へのブロードキャスト Clients.OthersInGroup(groupName).ReceiveMessage(message);
今までは Clients を使って自分自身にもプッシュが行われるという状態でしたが、1.0.0 からは Others などを使うことで回避することが出来るようになりました。