我们正尝试使用以下scheme将消息发布到多个渠道。
本质上,每个客户端都维护一个组通道,每当服务器要向多个客户端发送消息时,它都会执行以下操作:
在调试时一切正常,因为我们在各处设置了断点。但是我们注意到,一旦删除断点,该消息将不再到达其目的地。我们最终将问题缩小到了上面的第4步(删除了临时渠道)。当我们注释掉该代码并保留临时频道后,消息最终将到达目的地。
上面PubNub推荐的方案特别指出以下内容:
一旦发布成功(发布成功),您就可以 从每个频道组中删除该频道。
我们正在使用PubNub的REST api和RestSharp发出请求,并且除非我们做错了,否则上述声明似乎不成立。
以下是发送消息的代码:
var request = new RestRequest("publish/{pub_key}/{sub_key}/0/{channel}/0", Method.POST); //No callback rigth now <TODO>
request.AddUrlSegment("pub_key", _pubNubPubKey);
request.AddUrlSegment("sub_key", _pubNubSubKey);
request.AddUrlSegment("channel", channel);
request.AddJsonBody(messageJson);
var response = await ExecuteAsync(request);
仅当该响应返回true时,才会执行删除通道的代码:
var request = new RestRequest("v1/channel-registration/sub-key/{sub_key}/channel-group/{groupChannelName}", Method.GET);
request.AddUrlSegment("sub_key", _pubNubSubKey);
request.AddUrlSegment("groupChannelName", groupChannelName);
request.AddParameter("remove", channelName);
有什么想法吗?谢谢。