Using encoders
In the previous examples, we exchanged messages only of type string
. Sometimes, we may need to transfer more complex objects to the client, a Movie
instance, for example, holding information such as the movie title, actors, and so on. From a RESTful background, the most popular solution is to convert the object to a JSON string. Rather than doing this manually before using the sendText(String)
method, we can define a custom encode that automatically converts the object to the desired format.
Let's look at the following example:
@ServerEndpoint(value = "/movie/{movieId}", encoders = {MovieEncoder.class}) public class MoviesEndpoint{ public void onOpen(Session session, EndpointConfig endpointConfig) { Movie movie = new Movie(); try { // fill with some data session.getBasicRemote().sendObject(movie); } catch (IOException | EncodeException ex) { ex.printStackTrace(); } } ...