0
我已經使用這個code來編寫websocket客戶端在java中。這是一個安全的插座。到目的地的連接建立正常,但onMessage沒有被調用。Java WebSocket:onMessage沒有被觸發
當我在java腳本中編寫相同的東西時,它正在工作並能夠得到響應。
請檢查我的代碼,並告知我在這裏錯過了什麼。
我的代碼:
@ClientEndpoint
public class MyClientEndpoint {
@SuppressWarnings("unchecked")
@OnOpen
public void onOpen(Session session) {
System.out.println("Connected to endpoint: " + session.getBasicRemote());
try {
JSONObject obj = new JSONObject();
obj.put("subscribe", URLEncoder.encode("xxxxxxx","UTF-8"));
String msg = obj.toJSONString();
System.out.println("Sending message to endpoint: " + msg);
session.getBasicRemote().sendText(msg);
} catch (Exception ex) {
Logger.getLogger(MyClientEndpoint.class.getName()).log(Level.SEVERE, null, ex);
}
}
@OnMessage
public void onMessage(String message) {
System.out.println("Received message in client: " + message);
Client.messageLatch.countDown();
}
public class Client {
final static CountDownLatch messageLatch = new CountDownLatch(1);
public static void main(String[] args) {
try {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
String uri = "wss://api.....";
System.out.println("Connecting to:: " + uri);
container.connectToServer(MyClientEndpoint.class, URI.create(uri));
messageLatch.await(10, TimeUnit.SECONDS);
} catch (DeploymentException | InterruptedException | IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
您可能缺少'@ OnMessage'中的'Session session'參數。簽名應該是'public void myMethod(Session session,String message);' – Al1
嘗試將會話會話作爲方法的第一個參數,但它仍然不起作用。 –