Я пытаюсь применить веб-сокеты на стороне сервера для получения информации от разных клиентов. Конечная точка веб-сокета использует pathparam для идентификации конкретного клинта.
ws://192.168.1.100:8080/listener/device_00001
И класс конечной точки:
@ServerEndpoint(
value = "/listener/{deviceid}",
configurator = WsConfig.class,
subprotocols = {"abcProtocolv1", "abcProtocolv2"}
)
public class WsServer {
@OnOpen
public void onOpen(final Session session, @PathParam("deviceid") final String id) {
//some handling method
}
@OnClose
//some code here
@OnMessage
//some code here
}
Код работает до этого шага, и я могу получать сообщения от разных клиентов и идентифицировать устройства на основе pathparam.
Тем не менее, я хотел бы отправить ответ 404 для сбоя при обновлении связи, если идентификатор устройства недействителен.Ответ 404 должен быть отправлен до @OnOpen, и я проверил конфигуратор, и в него включены только пять функций:
- getEndpointInstance
- getNegotiatedSubprotocol
- getNegotiatedExtensions
- checkOrigin
- modifyHandshake
Кажется, что все функции не в состоянии обрабатывать проверку перед рукопожатием обновления, но я не могу найти какой-либо общий подход.
Должен ли я также применить @WebFilter?или в @ServerEndPoint есть какой-то общий подход?