我正在尝试使用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();