我正在学习tyrus WebSocket实现.但我不明白为什么以及什么时候我们需要在websocket端点中使用多个编码器或解码器.例如:
@ServerEndpoint(value = "/subscribe", decoders = { TextStreamMessageDecoder.class }, encoders = { TextStreamMessageEncoder.class })
public class ChatServerEndPoint {
......
}
Run Code Online (Sandbox Code Playgroud)
解码器和编码器列表中只有一个解码器和编码器.由于这些是解码器或编码器阵列,因此我可以一次使用多种类型的编码器或解码器.但是在后面提到的api描述中,
如果它总是使用列表的第一个元素,那么WebSockets API中的多个编码器或解码器的用例是什么?
public class TextStreamMessageDecoder implements Decoder.TextStream<JsonWrapper>{
public JsonWrapper decode(Reader reader) throws DecodeException,
IOException {
JsonReader jsonReader = Json.createReader(reader);
JsonObject jsonObject = jsonReader.readObject();
return new JsonWrapper(jsonObject);
}
}
public class TextStreamMessageEncoder implements Encoder.TextStream<JsonWrapper>{
public void encode(JsonWrapper object, Writer writer)
throws EncodeException, IOException {
JsonWriter jsonWriter = Json.createWriter(writer);
JsonObject jsonObject = object.getJson();
jsonWriter.write(jsonObject);
}
}
public class …Run Code Online (Sandbox Code Playgroud)