當我有一個WebSocket連接,發言權「/ WS」javax.servlet.Filter會攔截Websocket消息嗎? (Java Servlet的API)
將在「/ WS」路徑截獲一個普通javax.servlet.Filter的每條消息作爲一個普通的http請求?它會攔截只有第一個請求(如握手的一部分嗎?)
如果沒有的話,我怎麼能做出WebSocket的消息,例如一個過濾器?
我沒有找到有關規範的任何細節。
當我有一個WebSocket連接,發言權「/ WS」javax.servlet.Filter會攔截Websocket消息嗎? (Java Servlet的API)
將在「/ WS」路徑截獲一個普通javax.servlet.Filter的每條消息作爲一個普通的http請求?它會攔截只有第一個請求(如握手的一部分嗎?)
如果沒有的話,我怎麼能做出WebSocket的消息,例如一個過濾器?
我沒有找到有關規範的任何細節。
不,Servlet過濾器不會捕獲WebSocket消息。
Servlet根本不支持WebSocket協議。唯一可以做的就是註冊HttpUpgradeHandler(見HttpServletRequest#upgrade),然後在其上實現WebSocket協議。
或者..如果你想節省一些時間,看看JSR 356和實現,他們正在研究這個API之上。我個人在Tyrus上工作,這是JSR 356的參考實現。(它是Java EE 7的一部分,但您只需要Servlet 3.1 API)。
將它截距僅第一請求(作爲握手的一部分?)
是,僅在第一次請求,發起網頁套接字握手的一個,是由Servlet過濾器截獲。
是否有機會在EE6(Websphere 8.0)上使用Tyrus實現? –
在WebSocket握手之前運行Servlet過濾器還是不行? – isapir