0%

编解码器

编解码器

网络传输中全部使用的是二进制流,而两边使用java对象进行发送和接收,就需要使用编解码器

编码器

将java对象转换为WebSocket消息

  • 对于文本消息,需要实现Encoder.Text
  • 对于二进制消息,需要实现Encoder.Binary
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TextEncoder implements Encoder.Text<Message>{
// 实现将对象转为字符串(可以json,可以xml)
@Override
public String encode(Message o) throws EncodeException {
return null;
}

@Override
public void init(EndpointConfig endpointConfig) {

}

@Override
public void destroy() {

}
}

解码器

将WebSocket消息转换为java对象

  • 对于文本消息,需要实现Decoder.Text
  • 对于二进制消息,需要实现Decoder.Binary
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class TextDecoder implements Decoder.Text<Message>{
@Override
public Message decode(String s) throws DecodeException {
return null;
}

@Override
public boolean willDecode(String s) {
return false;
}

@Override
public void init(EndpointConfig endpointConfig) {

}

@Override
public void destroy() {

}
}

注册编解码器

在注解中进行配置

1
2
3
4
5
6
7
8
9
10
@ServerEndpoint(value = "/echo",
// 添加编码器
encoders = {
TextEncoder.class
},
// 添加解码器
decoders = {
TextDecoder.class
}
)