小编Md.*_*sar的帖子

WebSocket EndPoints注释中编码器列表或解码器列表的用例是什么?

我正在学习tyrus WebSocket实现.但我不明白为什么以及什么时候我们需要在websocket端点中使用多个编码器或解码器.例如:

@ServerEndpoint(value = "/subscribe", decoders = { TextStreamMessageDecoder.class }, encoders = { TextStreamMessageEncoder.class })
public class ChatServerEndPoint {
......
}
Run Code Online (Sandbox Code Playgroud)

解码器和编码器列表中只有一个解码器和编码器.由于这些是解码器或编码器阵列,因此我可以一次使用多种类型的编码器或解码器.但是在后面提到的api描述中,

websocket运行时将使用列表中的第一个解码器来解码消息,忽略其余的解码器.

如果它总是使用列表的第一个元素,那么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)

java tyrus java-websocket

6
推荐指数
1
解决办法
1673
查看次数

标签 统计

java ×1

java-websocket ×1

tyrus ×1