coldfusion在使用PubNub的herenow(java对象)时遇到问题
我已经包括了Pubnub-4.0.0。将jar文件放入我的webroot。 (Pubnub-4.0.0.jar可在此处下载:https://www.pubnub.com/docs/java/pubnub-java-sdk-v4)
我正试图将“现在就在这里”的java代码引入我的coldfusion项目,但在这样做时遇到了一些麻烦
java代码如下所示:
PNConfiguration pnConfiguration = new PNConfiguration();
pnConfiguration.setSubscribeKey("SubscribeKey")
PubNub pubnub = new PubNub(pnConfiguration);
pubNub.hereNow()
.channels(Arrays.asList("ch1", "ch2", "ch3")) // who is present on those channels?
.includeState(true) // include state with request (false by default)
.includeUUIDs(true) // if false, only shows occupancy count
.async(new PNCallback<PNHereNowResult>() {
@Override
public void onResponse(PNHereNowResult result, PNStatus status) {
}
});
我对应的Coldfusion代码如下:
<cfobject type="java" class="com.pubnub.api.PNConfiguration" name="objPNConfiguration" >
<cfset PNConfiguration = objPNConfiguration.init() >
<cfset PNConfiguration.setSubscribeKey("SubscribeKey") >
<cfobject type="java" class="com.pubnub.api.PubNub" name="objPubNub" >
<cfset pubnub = objPubNub.init(PNConfiguration) >
<cfset tmp = pubnub.hereNow({channels: "5A4B3B59-FA6A-F22A-404F18EFA8112508"}) >
<cfdump var="#tmp#" >
我没有收到任何返回的错误。 我觉得我调用“hereNow”方法的方式不正确,或者我试图显示结果的方式不正确
在这方面有人能提供帮助吗? 谢谢
# 1 楼答案
看起来
channels
是一个方法名,而不是一个结构。这同样适用于includeState
和includeUUIDs
。将它们作为链式方法调用,并传入预期参数channels()
需要一个CF数组(即java.util.List对象)李>includeState
和includeUUIDs
需要一个简单的布尔值李>前三(3)种方法应采用类似的方法:
.async()
方法有点不同,因为它需要某种类型的回调对象。不幸的是,看起来所有的callback classes都是^{abstract
类没有等价物抽象类不能实例化,也不能与CF10+中的coolDynamic Proxy Feature一起使用。动态代理是一个灵活的特性,它允许您用CFC替换自定义java类。但是,它只支持^{} 。由于
PNCallback
不是一个接口,因此实际上无法避免编写一个扩展PNCallback
的自定义java类编译后,将其添加到CF类路径。然后可以在CF中创建自定义类的实例,并将其传递到asynch()方法:
# 2 楼答案
Pubnub为此提供了RESTAPI调用https://s3.amazonaws.com/pubnub/sdk/RESTful+Documentation/index.html#presence-here-now-get 谢谢你,Pubnub