Stomp - 多个订阅,每个订阅都有一个唯一的处理程序

时间:2011-01-03 22:21:56

标签: comet stomp orbited

我正在使用Stomp / Orbited进行Comet功能。

为了处理多个渠道,我最终会这样做:

stomp.onmessageframe = function(frame) {

if(frame.headers ['destination'] =='/ thisFeed /'){ //处理thisFeed }

if(frame.headers ['destination'] =='/ thatFeed /'){ //处理thatFeed }

....我猜,这没关系。但是,如果我不知道,在加载时,我想如何处理Feed?我希望能够做到这样的事情:

stomp.subscribe('someOtherFeed',someOtherFeedHandler);

这样,当我订阅时,我可以然后定义处理程序,然后才能。

1 个答案:

答案 0 :(得分:0)

我已经提出了一个解决方案,但距离漂亮的距离还很远。

当我创建stomp消息时,我添加了一个“handler”属性作为标题,就像在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中使用的处理程序。但说真的,我认为有更好的方法。