我正在尝试使用ServiceStack的服务器事件功能,并想制作一种“在线用户”测试应用程序。我的想法是,每当新用户加入或离开时,我都希望更新连接到“用户”频道的每个用户。问题是我无法找到一种方法来检测订阅/用户何时离开/断开连接。

最佳答案

用户加入,离开或更新其ServerEvent订阅时,将触发ServerEventsClient.OnCommand回调。

您还可以随时通过以下方式从某个频道中获取所有活动订户的列表:

var sseClient = new ServerEventsClient(...);

var response = sseClient.ServiceClient.Get(new GetEventSubscribers {
    Channels = sseClient.Channels
});


这将返回一个包含订阅者公共信息的无类型Dictionary<string,string>的列表。

我还刚刚在this commit中为v4.0.57 on MyGet添加了GetChannelSubscribers()的类型化API,现在可以从中获得该类型化API,该类型化API提供了一种类型化API来获取所有订阅ServerEventsClient频道的用户,例如:

var channelSubscribers = sseClient.GetChannelSubscribers();

10-04 10:28