Stomp - несколько подписок, каждая с уникальным обработчиком - PullRequest
1 голос
/ 04 января 2011

Я использую Stomp / Orbited для функциональности Comet.

Чтобы справиться с несколькими каналами, я делаю так:

stomp.onmessageframe = function(frame) {

if (frame.headers ['destination'] ==' / thisFeed / ') {// обработать thisFeed}

if (frame.headers [' destination '] ==' / thatFeed / ') {// обработать thatFeed}

.... это нормально, я думаю.Но что, если я не знаю, во время загрузки, как я хочу обрабатывать канал?Я хочу иметь возможность сделать что-то вроде этого:

stomp.subscribe ('someOtherFeed', someOtherFeedHandler);

Таким образом, когда я подписываюсь, я могу определить обработчик тогда и только тогда.

1 Ответ

0 голосов
/ 04 января 2011

Я предложил одно решение, но оно очень далеко от симпатичного.

Когда я создаю сообщение stomp, я добавляю свойство «обработчик» в качестве заголовка, как в python:*

conn.send('Frank the Wonder Llama", destination="/infoAboutLlamas/", handler='llamas')

Затем в javascript:

    stomp.onmessageframe = function(frame) {
    window[frame.headers['handler']]() //Execute the function named by the handler
}

... и тогда вызывается функция llamas ().Затем я могу определить (и переопределить) лам в любом месте, где захочу.

Теперь я уверен, что это не может быть оптимальным решением.С другой стороны, мне нравится, что это дает мне некоторую гибкость в определении обработчика, который я хочу использовать прямо в Python.А если серьезно, я думаю, что есть лучший способ.

...