首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CometD:广播前处理广播消息

CometD:广播前处理广播消息
EN

Stack Overflow用户
提问于 2016-04-09 15:35:01
回答 1查看 79关注 0票数 0

我在码头里运行了一个彗星应用程序。我想从客户端获取传入的广播,然后进行一些处理(涉及与db的交互),然后在没有遇到错误的情况下向所有订阅者广播。

我最初的想法是用一个扩展来完成这个任务,但是有没有更合适的方法呢?

以下是基于@sbordet回答的修改尝试:

代码语言:javascript
复制
@Inject
private BayeuxServer bayeux;
@Session
private ServerSession serverSession;

    @Listener("/service/*")
    public void handle(ServerSession remote, ServerMessage message) {
        System.out.println("Message received on service: " + message);

        String broadcastChannel = message.getChannel().replace("/service", "");
        System.out.println("bayeux: " + bayeux + " - sending: " + broadcastChannel + " - " + message.getData());
        System.out.println("bayeux.getChannel(broadcastChannel): " + bayeux.getChannel(broadcastChannel));
        bayeux.getChannel(broadcastChannel).publish(serverSession, message.getData());
    }

本质上,我希望侦听所有服务频道,并进行一些处理,然后发布到相同的广播频道,减去/service。因此,/service/test变成了/test。

此当前值返回bayeux.getChannel(broadcastChannel)的null

EN

回答 1

Stack Overflow用户

发布于 2016-04-11 08:51:38

因为您所描述的是CometD内部的正常消息处理,所以不要使用扩展,而是使用服务

在需要修改处于CometD核心的Bayeux协议的行为时,应该使用扩展。

另一方面,服务是处理应用程序交换的业务消息的一种方便的方式,因此适合您的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36518945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档