2016-01-20 1 views
0

В моем проекте backend отправляет много сообщений, опубликованных по разным каналам.
Я вижу, что из консоли браузера полученное сообщение имеет channel. Но проблема в обратном вызове, переданном swampdragon.onChannelMessage, не получает информацию о канале. Вместо этого он получает список странных каналов.
Итак, когда приходит сообщение (в браузере), я не могу определить канал, на который он был опубликован, и, следовательно, обрабатывать его должным образом.Swampdragon: как определить канал, на который было опубликовано сообщение?

Я нашел код, где этот информационный канал отгоняет 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

Немного поздно, но в случае, если вы не смогли решить эту проблему:

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, чтобы проверить интересующий вас канал в списке.