0
我試着開發一個小的gwt聊天應用程序Atmosphere的gwt擴展。應用程序的服務器端部分注意傳入的AtmosphereResource關聯廣播器並暫停它。 這裏是關於暫停新的傳入AtmosphereResource代碼片段:AtmosphereResource變爲空
private void doGet(AtmosphereResource ar, String userId) {
if(BroadcasterFactory.getDefault().lookup(userId) != null) {
ar.setBroadcaster(BroadcasterFactory.getDefault().lookup(userId).addAtmosphereResource(ar));
} else {
ar.setBroadcaster(BroadcasterFactory.getDefault().get(userId).addAtmosphereResource(ar));
}
ar.suspend();
...
}
當我尋找那些AtmosphereResource,使用它以前存儲的UUID,我一直覺得很空:
...
AtmosphereResource arTarget = AtmosphereResourceFactory.getDefault().find(uuid);
if (arTarget != null) {
arTarget.getBroadcaster().broadcast(msg,arTarget);
} else {
log.info("handleRawMessage:no broadcaster "+((RawMessage) msg).toString());
}
...
有什麼不對?我還注意到,AtmosphereResources在立即超時時迅速獲得了onResume,但超時設置爲-1。我錯過了什麼?這是我pom的一個片段。
<dependency>
<groupId>org.atmosphere.extensions</groupId>
<artifactId>atmosphere-gwt20-client</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.atmosphere.extensions</groupId>
<artifactId>atmosphere-gwt20-common</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.atmosphere.extensions</groupId>
<artifactId>atmosphere-gwt20-server</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-runtime</artifactId>
<version>2.1.1</version>
</dependency>
您好!感謝您的回覆。爲什麼你爲服務器端實現了AtmosphereGWTHandler的擴展?我使用AbstractReflectorAtmosphereHandler實現我的服務器端。您是否將這個擴展名作爲氛圍處理程序指向您的atmosphere.xml文件? – Francesco
是的,我使用舊版本,我意識到之後,爲什麼我編輯我的答案,把我使用的氣氛版本。現在我正在嘗試2.0。我現在告訴你,如果它也在工作;) – Kasas
我已經測試了氣氛2.0,我可以找到沒有問題的廣播公司。你確定你有一個客戶端連接?我會發布我的代碼。 – Kasas