nginx配置websocket代理轉發 & java實現websocket

nginx配置

        location ~* /websocket {
           proxy_pass http://web-servers;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
           proxy_read_timeout 3600s;
        }

注意要點

  • 前端需要在$proxy_read_timeout 時間內主動與後端保持心跳(ping)來維持會話,使其在用戶無操作時不斷開
  • nginx upstream 用連接符“-”,而不是下劃線,防止 tomcat8.5.x 以後的版本出現問題
Error during WebSocket handshake: Unexpected response code: 400

一些思考過程

討論要點:
1、身份:客戶端/服務端、客戶端可能是瀏覽器也可能是後端;
2、模式:點對點/廣播、給指定批量通過業務過濾的部分用戶發消息;
3、幾個概念:cookie、http session id、websocket userId、websocket session id;
4、疑難:websocket會話長時間保持(nginx代理轉發 + 前端定時輪詢ping)、權限問題(是否需要登錄、http session過期是否disconnect websocket session,即websocket是否connect是否依賴於http session的是否存在)、集羣環境服務端主動推送指定的客戶端(已建立的會話連接可能不在本地當前節點)

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章