【发布时间】:2016-04-13 05:01:22
【问题描述】:
我在码头内运行了一个 cometd 应用程序。我想从客户端获取传入的广播,然后进行一些处理(涉及与数据库交互),然后在没有遇到错误的情况下通过向所有订阅者广播来完成。
我最初的想法是通过扩展来做到这一点,但是有没有更合适的方法?
这是我根据@sbordet 回答修改后的尝试:
@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) 返回一个空值
【问题讨论】: