javaのweb socketで、decoderとpathparamはある条件において不可能なようなだ。
以下の場合はダメ。
@ServerEndpoint( value = "/ws/{p1}/{p2}/" decoders = {HogeDecoder.class}, encoders = {HogeEncoder.class}) public class HogeWebsocket { /** * open hander. */ @OnOpen public void onOpen(@PathParam("p1") String p1, Session session, EndpointConfig config) { : : } }
これだと、p1がdecoderの対象になるみたい。
そのため、次のような方法で対処する。
@ServerEndpoint( value = "/ws/{p1}/{p2}/" decoders = {HogeDecoder.class}, encoders = {HogeEncoder.class}) public class HogeWebsocket { /** * open hander. */ @OnOpen public void onOpen(Session session, EndpointConfig config) { Map<String, String> pathParameters = session.getPathParameters(); String p1 = pathParameters.get("p1"); : } }
本件は、decoderでバイナリからテキストに変換しようとした際に起きた現象。
なので、decoderが何をするかによるとは思うが。。
javaのページを見たが、それらしき記述はなかった。。
コメントがあればどうぞ