0

在我的项目后端发送大量消息发布到不同的渠道。
我可以从浏览器控制台看到到达的消息具有channel属性。但问题是传递给的回调swampdragon.onChannelMessage没有获得该通道信息。它会得到奇怪的频道列表。
因此,当消息到达(在浏览器中)时,我无法弄清楚它发布到的频道,因此无法正确处理它。

我找到了删除该频道信息的代码https://github.com/jonasagstedt/swampdragon/blob/master/swampdragon/static/swampdragon/js/dist/swampdragon.js#L261

if ('channel' in e.data) {
  var channel = swampDragon.channels[e.data.channel];
  delete(e.data['channel']);
  swampDragon.settings.onchannelmessage(channel, e.data);
  return;
}

所以我的问题是前端开发人员如何确定消息到达的渠道是什么,以便能够正确处理消息?

4

1 回答 1

0

有点晚了,但如果你无法解决这个问题:

swampdragon.open(function() {
  swampdragon.subscribe('notification', 'notification', null, function (context, data) {
    // Successfully subscribed to the notification channel
  }, function () {
    console.error('Error', arguments);
  });
});

swampdragon.onChannelMessage(function(channels, message) {
  if (channels.indexOf('notification') > -1) {
    // Message sent on the notification channel
  }
});

在参数中是传入消息发送到onChannelMessagechannels通道数组。您可以使用indexOf检查列表中是否存在您感兴趣的频道。

于 2016-03-07T22:37:48.263 回答