2

我正在调查swampdragon chat_example。在router.py按照文档get_subscription_channel中给出了频道名称。
当我尝试更改重新运行值时,它仍然有效。

如何将消息限制到特定的组/频道。我需要在前端做什么。

from swampdragon import route_handler
from swampdragon.route_handler import BaseRouter


class ChatRouter(BaseRouter):
    route_name = 'chat-route'
    valid_verbs = ['chat', 'subscribe']

    def get_subscription_channels(self, **kwargs):
        return ['chatrm']

    def chat(self, *args, **kwargs):

        errors = {}

        if errors:
            self.send_error(errors)
        else:
            self.send({'status': 'ok'})
            self.publish(self.get_subscription_channels(), kwargs)


route_handler.register(ChatRouter)

这是订阅方法。

function subscribe () {
    swampdragon.subscribe('chat-route', 'local-channel', null, function (context, data) {
        // any thing that happens after successfully subscribing
    }, function (context, data) {
        // any thing that happens if subscribing failed
    });
}
4

1 回答 1

1

我也遇到了同样的问题。这里的问题是您没有将数据发布到您订阅的频道。您订阅了名为“local-channel”的频道,但在您的 router.py 中,您正在发布或路由另一个名为“chatrm ”的频道。这就是为什么您没有收到任何通知的原因。有两种方法可以修复它。

1、需要修改router.py中的get_subscription_channels方法,如下图。

def get_subscription_channels(self, **kwargs):
    return ['local-channel']

或者

2.更改订阅方式如下:

function subscribe () {
swampdragon.subscribe('chat-route', 'chatrm', null, function (context, data) {
    // any thing that happens after successfully subscribing
}, function (context, data) {
    // any thing that happens if subscribing failed
});
}
于 2015-12-28T10:24:40.803 回答