gpt4 book ai didi

java - CometD 将消息发布回客户端

转载 作者:行者123 更新时间:2023-12-04 06:04:32 27 4
gpt4 key购买 nike

我在向客户端发回消息时遇到问题。下面是我的代码

JavaScript

dojox.cometd.publish('/service/getservice', {
userid : _USERID,

});
dojox.cometd.subscribe('/service/getservice', function(
message) {
alert("abc");
alert(message.data.test);
});

Configuration Servlet

bayeux.createIfAbsent("/service/getservice", new ConfigurableServerChannel.Initializer() {

@Override
public void configureChannel(ConfigurableServerChannel channel) {
channel.setPersistent(true);
GetListener channelListner = new GetListener();
channel.addListener(channelListner);
}
});

获取监听器类
public class GetListener implements MessageListener {
public boolean onMessage(ServerSession ss, ServerChannel sc) {
SomeClassFunction fun = new SomeClassFunction;
}
}

某个类函数
class SomeClassFunction(){

}

在这里我正在创建一个 boolean 变量
boolean 成功;
如果是真的,则向客户端发送一条消息,该消息在 javascript 中。如何将消息发送回客户端。我也试过这条线。
      remote.deliver(getServerSession(), "/service/getservice",
message, null);

但它在远程对象和 getServerSession 方法上给了我一个错误。

最佳答案

为了达到您的目标,您无需实现监听器或配置 channel 。您可能需要在稍后阶段添加一些配置,例如为了添加授权人。

这是ConfigurationServlet的代码,取自此 link :

public class ConfigurationServlet extends GenericServlet
{
public void init() throws ServletException
{
// Grab the Bayeux object
BayeuxServer bayeux = (BayeuxServer)getServletContext().getAttribute(BayeuxServer.ATTRIBUTE);
new EchoService(bayeux);
// Create other services here

// This is also the place where you can configure the Bayeux object
// by adding extensions or specifying a SecurityPolicy
}

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
{
throw new ServletException();
}
}

这是 EchoService的代码类,取自此 link :
public class EchoService extends AbstractService
{
public EchoService(BayeuxServer bayeuxServer)
{
super(bayeuxServer, "echo");
addService("/echo", "processEcho");
}

public void processEcho(ServerSession remote, Map<String, Object> data)
{
// if you want to echo the message to the client that sent the message
remote.deliver(getServerSession(), "/echo", data, null);

// if you want to send the message to all the subscribers of the "/myChannel" channel
getBayeux().createIfAbsent("/myChannel");
getBayeux().getChannel("/myChannel").publish(getServerSession(), data, null);
}
}

关于java - CometD 将消息发布回客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519878/

27 4 0