Cometd Java客户端赢得';无法发布到Comet服务器

Cometd Java客户端赢得';无法发布到Comet服务器,java,android,jetty,cometd,Java,Android,Jetty,Cometd,我遵循了我可以找到的制作Cometd java客户机应用程序的示例。我试图做到这一点,当用户按下屏幕上的按钮时,Comed会向服务器发布消息。现在调用发布,但服务器从未接收到发送给其侦听器的消息。我让这个服务器侦听器使用javascript,但不使用java代码 客户端设置如下所示: // Prepare the transport Map<String, Object> options = new HashMap<String, Object&

我遵循了我可以找到的制作Cometd java客户机应用程序的示例。我试图做到这一点,当用户按下屏幕上的按钮时,Comed会向服务器发布消息。现在调用发布,但服务器从未接收到发送给其侦听器的消息。我让这个服务器侦听器使用javascript,但不使用java代码

客户端设置如下所示:

        // Prepare the transport
        Map<String, Object> options = new HashMap<String, Object>();
        ClientTransport transport = LongPollingTransport.create(options, httpClient);

        _client = new BayeuxClient("http://10.100.97.168:8888/slideshow/slideshow/", transport);
        _client.getChannel(Channel.META_HANDSHAKE).addListener(new InitializerListener());
        _client.getChannel(Channel.META_CONNECT).addListener(new ConnectionListener());
尝试发布的按钮按下:

_btnPlay.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if(_connection_established == true)
                {
                    Map<String, Object> data = new HashMap<String, Object>();
                    _clientSessionChannel.publish(data);
                }
            }
         });
因此,我可以建立一个连接,然后调用我的发布,但服务器从未接收它。我还注意到,如果我进行同样的发布,但在握手或连接回调中,服务器将接收它。似乎我不能在回调之外发布


提前感谢您的帮助。

事实证明,我是在Androids主UI线程上运行网络Comed代码的,这是不允许的。一旦我将所有Comed代码移到AsyncTask上,它就会一直工作。

很抱歉,您的问题不完整。它不显示建立连接的位置,也不显示客户端会话通道初始化的位置。可能是前者从未设置为true,或者后者使用错误的频道名称初始化,等等。如果您从其他地方发布作品,这意味着Comed本身工作正常,问题出在您的代码中。您的投诉对回答问题无效,我声明_clientSessionChannel.publish(data);被调用,这样您就不必担心连接的建立,并且clientSessionChannel在特定时间工作,所以这也是有效的。事实证明,我试图在主UI线程上运行网络代码,这在Android中是不允许的。我无法将我的android项目配置为使用cometd java客户端。对于间接依赖关系,我不断得到NoClassDefFound异常。
_btnPlay.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if(_connection_established == true)
                {
                    Map<String, Object> data = new HashMap<String, Object>();
                    _clientSessionChannel.publish(data);
                }
            }
         });
@Listener("/service/slide/play")
    public void processServiceSlidePlay(ServerSession client, ServerMessage message)
    {
        synchronized(imagelock)
        {
            if(slideShowRunning == false && imageIDList != null && imageIDList.size() > 0)
            {
                slideShowRunning = true;
                if(imageIDList != null && imageIDList.size() > 0)
                {           
                    deliverChangeMessage(client, message);  
                }
            }
        }
    }