??在使用jetty的websocket中遇到了一些問題,因為使用的是微信打開的頁面,所以必須使用https和wss協(xié)議打開連接,websocket使用wss時連不上服務(wù)端的websocket,查閱了一些資料后使用了nginx去反向代理這個請求,解決了這個問題。
需要設(shè)置以下幾個步驟:
-
1.Nignx SSL證書,并設(shè)置強制跳轉(zhuǎn)Https訪問(略)
-
2.在前端將ws協(xié)議請求更改為wss協(xié)議請求
wss://域名或者IP,根據(jù)實際情況填寫/websocket/jetty啟動時,websocket所在的webapplication內(nèi)部對應(yīng)的servlet
部分代碼
??如上圖所示,在webSocket中創(chuàng)建好了之后,在ContextHandler(上下文句柄對象)添加該句柄對應(yīng)的Path,如果不需要使用ssl加密訪問,則使用ws訪問即可,訪問
ws://你的域名:jetty設(shè)置的監(jiān)聽端口/event/
-
3.在nginx中設(shè)置websocket代理
設(shè)置upstream
upstream wss_svr{
?服務(wù)端ip:jetty啟動時,websocket監(jiān)聽的端口;
}
配置代理模塊
location /websocket/{
?proxy_pass http://wss_svr;
?proxy_set_header X-Real-IP $remote_addr;
?proxy_set_header X-Forward-For $remote_addr;
?proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
?proxy_http_version 1.1;
?proxy_set_header Upgrade $http_upgrade;
?proxy_set_header Connection "upgrade";
}