首页 > 解决方案 > 删除群组频道时未发送 PubNub 消息

问题描述

我们正在尝试使用以下方案一次将消息发布到多个通道。

本质上,每个客户端都维护一个组通道,每当服务器想要向多个客户端发送消息时,它都会执行以下操作:

  1. 创建临时频道(每次使用新的 GUID 作为名称)。
  2. 将临时频道添加到每个客户的群组频道。
  3. 将消息发送到临时频道。
  4. 删除临时频道。

当我们调试时,一切都很好,因为我们到处都设置了断点。但是我们注意到,一旦我们删除断点,消息将不再到达其目的地。我们最终将问题缩小到上面的第 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);

有任何想法吗?谢谢。

标签: c#asp.net-corepubnub

解决方案


推荐阅读