package org.javaee7.websocket.encoder.programmatic; import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.logging.Level; import java.util.logging.Logger; import javax.websocket.ClientEndpoint; import javax.websocket.EncodeException; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; /** * @author Arun Gupta */ @ClientEndpoint(encoders = {MyMessageEncoder.class}, decoders={MyMessageDecoder.class}) public class MyClient { public static CountDownLatch latch= new CountDownLatch(3); public static MyMessage response; @OnOpen public void onOpen(Session session) { try { MyMessage message = new MyMessage("{\"apple\" : \"red\", \"banana\": \"yellow\"}"); session.getBasicRemote().sendObject(message); } catch (IOException | EncodeException ex) { Logger.getLogger(MyClient.class.getName()).log(Level.SEVERE, null, ex); } } @OnMessage public void processMessage(MyMessage message) { response = message; latch.countDown(); } @OnError public void onError(Throwable t) { t.printStackTrace(); } }