Привет, ребята. В моем приложении WebSocket серверу WS необходимо обрабатывать три типа сообщений: DataPkg, SigPkg и WS_SigPkg. DataPkg является двоичным для пользовательских данных, с заголовками контроллера; SigPkg - это String для управления пользовательскими данными между WS-клиентами, а WS_SigPkg также является String для регистрации на WS-сервере и переключения DataPkg и SigPkg между различными сеансами WS.Java WebSocket: Multi Text/Data MessageHandler
Так я ставлю шесть кодера/декодеры:
decoders = {SigDecoder.class, WS_SigDecoder.class, DataDecoder.class},
encoders = {SigEncoder.class, WS_SigEncoder.class, DataEncoder.class}
Тогда я получил сильфон ошибки:
Caused by: javax.servlet.ServletException: Web socket server initialization failed.
at org.glassfish.tyrus.servlet.TyrusServletFilter.init(TyrusServletFilter.java:126)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:131)
... 28 more
Caused by: javax.websocket.DeploymentException: Class org.sample.xyzserver.XyzServer. Text MessageHandler already registered.
кажется GlashFish сервер 4.1.1 не может добавить два MessageHandlers для струнных сообщений, хотя в верхний слой они разные, и декодеры могут это найти.
Есть ли какое-либо упущенное понимание или есть простой подход, или мне нужно рефакторинг использовать только один MessageHandler для строки и один для двоичного? Благодарю.