2016-09-21 14 views
0

からグループを作成します。にもかかわらず、私は(idとnameプロパティを持つ)エンティティChannelIdsのグループの配列を作成するにはどうすればよいSignalRは、私のようにグループを作成する方法を見ることができ、アレイ

public Task CreateGroup(string group) 
{ 
    return Groups.Add(Context.ConnectionId, group); 
} 

私が持っている唯一の接続IDはcontext.ConnectionIdです。
Taskの構文で編集)

私はグループ名の配列を持っていれば、それに基づいてグループを作成できます。以下のような何か...

public void CreateGroups(string[] groups) 
{ 
    Groups.AddRange(Context.ConnectionId, groups); 
} 
+1

もう少し達成しようとしていることを説明してください。ありがとう! –

+0

なぜそれをループするのはなぜですか? –

+0

私はそれを正しいタスク構文で編集しました。私はメソッド本体にグループの配列を追加すると何を返すのか分かりません – heyNow

答えて

1

あなたはこのような何かを行うことができます。

public async Task CreateGroup(string[] groups) 
{ 
    foreach (var group in groups) 
    { 
     await Groups.Add(Context.ConnectionId, group); 
    } 
} 

しかし多くのグループにクライアントを追加することに注意すべき点があります。グループメンバシップがクライアントとサーバの間で送信される方法は、接続が属するグループの暗号化されエンコードされたリストであるgroupsTokenです。接続が多くのグループに属すると、groupsTokenは本当に長くなっています。 groupsTokenは、いくつかの操作(ほとんどの場合、再接続、または各ポーリング要求に対してlongPollingの場合)のク​​エリ文字列で送信されるので、長すぎるとurlが長くなるため要求が失敗する可能性があります。

+0

うわー、わかりませんでした。クライアントが割り当てられたグループに残るようにグループメンバーシップを認証する方法を考えていました。それら)。 また、独自のトークンを使用して安全な信号R接続を確立すると、グループが作成されたときにグループトークンに交換されますか? – heyNow

+0

私はあなたがそれについて尋ねているならあなたがあなたのグループトークンを提供できるとは思わない - サーバはトークンを解読できる必要があるので、同じ鍵を使ってそれを暗号化しなければならない。また、グループメンバーシップが変更された場合、サーバーは新しいgroupsTokenをクライアントにプッシュします。あなた自身のグループを提供するどんな方法でも、トークンはサポートされているシナリオではありません。システムをハックしようとしている場合、あなたはかなりあなた自身です。 – Pawel

関連する問題