将客户端添加到组

时间:2012-10-18 20:42:33

标签: c# signalr signalr-hub

我在ASP.net应用程序中使用signalr。我希望我的客户在连接时添加到组中。这样,我可以按组分隔消息。我对以下代码有两个问题

public class MyHub : Hub, IDisconnect
{

    private IMyInterface x;
    public MyHub(IMyInterface y)
    {
       x = y;
    }

    public Task Join()
    {
        string group = x.getGroup();
        return Groups.Add(Context.ConnectionId, group);
    }

    public Task Send(string message)
    {
        string group = x.getGroup();
        return Clients[group].addMessage(message);
    }

    public Task Disconnect()
    {
        string group = x.getGroup();
        return Clients[group].leave(Context.ConnectionId);
    }
}
  1. 客户端连接和断开连接时是否自动调用Join()和Disconnect()方法?如果没有,我最好去哪里叫它?
  2. 我使用ninject来解析我的依赖项,但它在上面的代码中不起作用。是否有任何额外的步骤让我使用信号器类进行ninject工作?
  3. 任何人

1 个答案:

答案 0 :(得分:0)

  

当a时自动调用Join()和Disconnect()方法   客户端连接和断开连接?如果没有,哪里是最好的地方   我打电话给它?

我不知道Join会成为标准的signalr方法,但是文档中有example用于检测客户端与集线器的连接,重新连接和断开连接。

public class Status : Hub, IDisconnect, IConnected
{
    public Task Disconnect()
    {
        return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Connect()
    {
        return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Reconnect(IEnumerable<string> groups)
    {
        return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
    }
}

根据客户行为和您的configuration自动调用这些内容。