-2

たとえば、 connection.idの代わりにユーザー名を追加できますか。それは機能しますか?ConnectionId は常に変更されるため、ConnectionId を介してユーザーに通知を送信できないため、これを求めていますか?

Groups.Add("my_username", "mygroup1);

4

1 に答える 1

1

いいえ、できません。ConnectionID を使用する必要があります。ただし、次のことはできます。

接続 ID にマップされたユーザーのリストをハブ ストアに保存します。

static ConcurrentDictionary<string, User> _users = new ConcurrentDictionary<string, User>();

クライアント接続が開始された後、次のようなメソッドを呼び出すことができます。

myHub.server.createUser("MyUsername");

もちろん、サーバー上には次のものがあります。

public void createUser(string userName) 
{
    // You'd create a User class that had both of the following properties
    var user = new User
    {
        UserName = userName,
        ConnectionID = Context.ConnectionId
    };
    _users.TryAdd(user.ConnectionID, user);        
}

そのため、接続 ID を介してユーザーを検索する場合は常に、_users 辞書を介してユーザー名のコンテキストが保持されます。

注: このコードは signalr 1.0 alpha + 経由で機能します

于 2012-12-12T23:47:09.360 に答える