javax.servlet.Filter 会拦截 Websocket 消息吗?(Java Servlet API) [英] Will javax.servlet.Filter intercept Websocket messages? (Java Servlet API)

查看:73
本文介绍了javax.servlet.Filter 会拦截 Websocket 消息吗?(Java Servlet API)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我有一个 websocket 连接时,在 "/ws" 说

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

/ws"路径上的常规 javax.servlet.Filter 是否会将每条消息作为常规 http 请求拦截?它会只拦截第一个请求(作为握手的一部分?)

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?)

如果没有,那么我如何为 websocket 消息制作这样的过滤器?

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

我在规范中没有找到任何关于它的细节.

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

推荐答案

不,Servlet 过滤器不会捕获 WebSocket 消息.

No, Servlet Filter won't catch WebSocket messages.

Servlet 根本不支持 WebSocket 协议.你唯一能做的就是注册 HttpUpgradeHandler(参见 HttpServletRequest#升级),然后在此基础上实现 WebSocket 协议.

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.

或者...如果您想节省一些时间,请查看 JSR 356 和实现,它们正在此 API 之上工作.我个人在 Tyrus 上工作,它是 JSR 356 的参考实现.(它是 Java EE 7 的一部分,但是您只需要 Servlet 3.1 API).

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).

这篇关于javax.servlet.Filter 会拦截 Websocket 消息吗?(Java Servlet API)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆