CometD数据未到达客户端

时间:2016-07-27 20:48:46

标签: javascript java cometd

我有两个使用CometD与服务器通信的客户端应用程序。我的服务器使用ServerSession的deliver()方法向我的客户端发送一些数据。数据采用字符串形式。

我的一个应用程序是基于Javascript的Web应用程序。我可以通过以下方式访问服务器提供的数据:

str_var <- "knitr"
library(str_var,character.only=TRUE)

这适用于我想在特定频道上发送数据时的回调。

不幸的是,我的第二个应用程序是一个Java应用程序,其回调似乎无法获取数据。回调的工作原理如下:

function(theMsg) {
  alert(theMsg.data);
}

这里的问题是getData()由于某种原因在Java中返回null。我似乎找不到任何方法来获取我从服务器发送的数据!

java CometD API中是否存在某种错误,或者我使用错误的函数来获取我从服务器发送的数据?我怎样才能获得这些数据?

有人请指教......

增加1:下面是第一个客户端,按照sbordet的要求在Javascript中实现。这个客户工作......

public void onMessage(ClientSessionChannel channel, Message message)
{
    String data = (String )theMsg.getData();
    System.out.println("Data "+data);
}

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

当我注意到我正在收听的频道名称中有一个拼写错误时,我正在查看我的Java代码,以便将其格式化为发布到此问题。我纠正了错字,其中包括我用来向服务器发布请求的通道(显然我使用的监听器在返回数据之前被激活),因此getData()方法为空。

将数据发送到正确的频道解决了问题。我的getData()方法不再返回null。

对不起,我告诉人们这样一个荒谬的业余错误。我将来会尽量避免这种事情。

特别感谢sbordet请求完整的代码,这使我重新检查它并找到我的错字......