4

When I have a websocket connection, say at "/ws"

Will a regular javax.servlet.Filter on the "/ws" path intercept each message as a regular http request? Will it intercept only the first request (as part of the handshake?)

If no, then, how can I make such a filter for websocket messages?

I don't find any specifics about that in the spec.

David Hofmann
  • 5,683
  • 12
  • 50
  • 78

2 Answers2

3

No, Servlet Filter won't catch WebSocket messages.

Servlet does not support WebSocket protocol at all. Only thing you can do is to register HttpUpgradeHandler (see HttpServletRequest#upgrade)and then implement WebSocket protocol on top of that.

Or.. if you want to save some time, take a look at JSR 356 and the implementations, they are working on top of this API. I personally work on Tyrus, which is the reference implementation of JSR 356. (It is part of Java EE 7, but you only need Servlet 3.1 API).

Pavel Bucek
  • 5,304
  • 27
  • 44
1

Will it intercept only the first request (as part of the handshake?)

Yes, only the first request, the one that initiates the WebSocket Handshake, is intercepted by the Servlet Filter.

isapir
  • 21,295
  • 13
  • 115
  • 116