1

我正在使用 Stomp / Orbited 来实现 Comet 功能。

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

stomp.onmessageframe = function(frame) {

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

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

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

stomp.subscribe('someOtherFeed', someOtherFeedHandler);

这样,当我订阅时,我可以在那时且仅在那时定义处理程序。

4

1 回答 1

0

我想出了一个解决方案,但它远非漂亮。

当我创建 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 中使用的处理程序。但说真的,我认为有更好的方法。

于 2011-01-04T19:58:52.467 回答