摘要:做反向代理是需要注意的問題如果排除所有問題后,那剩下的問題可以考慮出在反向代理上,一下有幾點是可以考慮的。
閱讀原文:https://wdd.js.org/stomp-over...
1. AWS EC2 不支持WebSocket直達解決方案 英文版
簡單說一下思路:WebSocket底層基于TCP協議的,如果你的服務器基于HTTP協議暴露80端口,那WebSocket肯定無法連接。你只要將HTTP協議修改成TCP協議就可以了。
這個問題也會導致stompjs連不上服務端,報什么版本不兼容的日志
然后是安全組的配置:
同樣如果使用了NGINX作為反向代理,那么NGINX也需要做配置的。
// https://gist.githubusercontent.com/unshift/324be6a8dc9e880d4d670de0dc97a8ce/raw/29507ed6b3c9394ecd7842f9d3228827cffd1c58/elasticbeanstalk_websockets files: "/etc/nginx/conf.d/01_websockets.conf" : mode: "000644" owner: root group: root content : | upstream nodejs { server 127.0.0.1:8081; keepalive 256; } server { listen 8080; location / { proxy_pass http://nodejs; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } "/opt/elasticbeanstalk/hooks/appdeploy/enact/41_remove_eb_nginx_confg.sh": mode: "000755" owner: root group: root content : | mv /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf.old2. NGINX做反向代理是需要注意的問題
如果排除所有問題后,那剩下的問題可以考慮出在反向代理上,一下有幾點是可以考慮的。
HTTP的版本問題: http有三個版本,http 1.0, 1.1, 2.0, 現在主流的瀏覽器都是使用http 1.1版本,為了保證更好的兼容性,最好轉發時不要修改協議的版本號
路徑重寫的編解碼問題: NGINX具有路徑重寫功能,如果你使用了該功能,就要考慮問題可能出在這里,因為NGINX在路徑重寫時,需要對路徑進行編解碼,有可能在解碼之后,沒有編碼就發送給后端的服務器,導致后端服務器無法對URL進行解碼。
3. IE8 IE9 有沒有簡單方便支持WebSocket的方案目前測試下來,最簡單方案是基于flash的。參考:https://github.com/gimite/web...
注意該方案需要在WebSocket服務上的843端口, 提供socket_policy_files, 也可以參考:A PolyFill for WebSockets
網上也有教程是使用socket.io基于ajax長輪訓的方案,如果服務端已經確定的情況下,一般是不會輕易改動服務端代碼的。而且ajax長輪訓也是有延遲,和disconnect時,無法回調的問題。
4. stompjs connected后,沒有調用connect_callBack該問題主要是使用web-socket-js,在ie8,ie9上出現的
該問題還沒有分析出原因,但是看了stompjs的源碼不是太多,明天用源碼調試看看原因。
具體原因已經找到,參考https://github.com/wangduandu...。
5. 參考文獻STOMP Over WebSocket
STOMP Protocol Specification, Version 1.1
Stomp Over Websocket文檔,
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39830.html
摘要:面向消息的簡單文本協議。為提供了備選方案。但無論哪種場景,對于實際應用來說,這種通信形式層級過低。協議,來為瀏覽器和間的通信增加適當的消息語義。協議解決了瀏覽器發起請求以及服務器響應請求的細節,假設協議并不存在,只能使用套接字來編寫應用。 最近有項目需求要用到websocket,剛開始以為很簡單,但是隨著遇到問題,深入了解,才知道websocket并不是想象中的那么簡單,這篇文章主要是...
摘要:面向消息的簡單文本協議。為提供了備選方案。但無論哪種場景,對于實際應用來說,這種通信形式層級過低。協議,來為瀏覽器和間的通信增加適當的消息語義。協議解決了瀏覽器發起請求以及服務器響應請求的細節,假設協議并不存在,只能使用套接字來編寫應用。 最近有項目需求要用到websocket,剛開始以為很簡單,但是隨著遇到問題,深入了解,才知道websocket并不是想象中的那么簡單,這篇文章主要是...
摘要:面向消息的簡單文本協議。為提供了備選方案。但無論哪種場景,對于實際應用來說,這種通信形式層級過低。協議,來為瀏覽器和間的通信增加適當的消息語義。協議解決了瀏覽器發起請求以及服務器響應請求的細節,假設協議并不存在,只能使用套接字來編寫應用。 最近有項目需求要用到websocket,剛開始以為很簡單,但是隨著遇到問題,深入了解,才知道websocket并不是想象中的那么簡單,這篇文章主要是...
摘要:閱讀原文把錯誤打印出來斷開的原因有很多,最好在斷開時,將錯誤打印出來。的字段表示了斷開的原因。有三個字段需要注意通過分析這三個字段,一般就可以找到斷開原因是錯誤碼,是整數類型是斷開原因,是字符串表示是否正常斷開,是布爾值。 閱讀原文:https://wdd.js.org/websocket-... 1. 把錯誤打印出來 WebSocket斷開的原因有很多,最好在WebSocket斷開時...
閱讀 1058·2021-11-12 10:34
閱讀 985·2021-09-30 09:56
閱讀 668·2019-08-30 15:54
閱讀 2602·2019-08-30 11:14
閱讀 1465·2019-08-29 16:44
閱讀 3203·2019-08-29 16:35
閱讀 2489·2019-08-29 16:22
閱讀 2441·2019-08-29 15:39