我有两个使用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);
}
答案 0 :(得分:0)
我解决了这个问题。
当我注意到我正在收听的频道名称中有一个拼写错误时,我正在查看我的Java代码,以便将其格式化为发布到此问题。我纠正了错字,其中包括我用来向服务器发布请求的通道(显然我使用的监听器在返回数据之前被激活),因此getData()方法为空。
将数据发送到正确的频道解决了问题。我的getData()方法不再返回null。
对不起,我告诉人们这样一个荒谬的业余错误。我将来会尽量避免这种事情。
特别感谢sbordet请求完整的代码,这使我重新检查它并找到我的错字......