我在服務器和客戶端之間有WebSockets連接。這允許我發送命令給客戶,他用數據迴應我。該服務器也有Web服務。然後我可以說,「在該客戶端上執行此命令」。因此,我們有:如何通過WebSockets響應Web服務請求
客戶端1 --- Web服務 - >服務器的WebSockets --- --->客戶端2
的問題是,從客戶端2接收數據的服務器上的方法是無效。
如何將數據發送回Client1?
的WebServices:
@Path("/ws")
public class QOSResource {
public QOSResource(){}
@Produces(MediaType.TEXT_PLAIN)
@Path("/ping/{macAddr}")
@GET
public String getPing(@PathParam("macAddr") String macAddr){
return"Mac adresse : "+macAddr;
//WebSocketsCentralisation.getInstance().ping(macAddr);
}
}
的WebSockets提前
@OnWebSocketMessage
public **void** onText(Session session, String message) {
if (session.isOpen()) {
if(firstConnection){
firstConnection = false;
this.macAddr = message;
WebSocketsCentralisation.getInstance().join(this);
}
ObjectMapper mapper = new ObjectMapper();
Object o;
try {
o = mapper.readValue(message, Object.class);
if(o instanceof PingResult){
**// TODO return result to ws**
}
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
感謝您的幫助
對不起,我真的不知道你在說什麼。我的websockets和我的客戶端2之間的通信是好的。客戶端1使用web服務時出現問題。如何在我告訴「執行ping」(getPing)和接收之間進行同步。 – brunettia
@brunettia - 你的代碼指出_websockets_調用的void方法,但你的問題似乎指的是_webservices_調用。這是什麼? – jtahlborn
兩者其實。 websocket服務器將收到數據,但是以無效的方式。那麼如何將數據發送回web服務,並讓它等待響應呢! – brunettia