gpt4 book ai didi

java - CometD:在广播之前处理广播消息

转载 作者:行者123 更新时间:2023-12-01 10:05:25 29 4
gpt4 key购买 nike

我有一个 cometd 应用程序在 jetty 内运行。我想从客户端获取传入的广播,然后进行一些处理(涉及与数据库交互),然后如果没有遇到错误,则通过向所有订阅者广播来完成。

我最初的想法是通过扩展来做到这一点,但是有更合适的方法吗?

<小时/>

这是我根据 @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());
}

本质上,我想监听所有服务 channel ,并进行一些处理,然后发布到相同的广播 channel ,减去/service。因此,/service/test 变为/test。

此电流为 bayeux.getChannel(broadcastChannel) 返回 null

最佳答案

因为你描述的是CometD内部的正常消息处理,所以不要使用extensions ,但是services .

如果您想要修改作为 CometD 核心的 Bayeux 协议(protocol)的行为,则应使用扩展。

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

关于java - CometD:在广播之前处理广播消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36518945/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com