1

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

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 与信号器类一起工作?

有人吗?

4

1 回答 1

0

当客户端连接和断开连接时,会自动调用 Join() 和 Disconnect() 方法吗?如果没有,我从哪里打电话最好?

我不知道 Join 将是一种标准的信号器方法,但是文档中有用于检测客户端与集线器的连接、重新连接和断开连接的示例。

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());
    }
}

这些会根据客户端行为和您的配置自动调用。

于 2012-10-20T21:05:04.820 回答