在我的项目中,后端发送了大量发布到不同频道的消息
我可以从浏览器控制台看到到达的消息有channel
属性。
但问题是传递给swampdragon.onChannelMessage
的回调并没有获得该频道信息。它取而代之的是奇怪的频道列表
因此,当消息到达时(在浏览器中),我无法找出它发布到的频道,因此可以正确处理它。
我找到了删除该频道信息的代码https://github.com/jonashagstedt/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;
}
所以我的问题是前端开发人员如何能够找出邮件到达的渠道是什么,以便能够正确处理邮件?
答案 0 :(得分: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
}
});
在onChannelMessage
中,channels
参数是传入消息的通道数组。您可以使用indexOf
检查列表中存在的您感兴趣的频道。