成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在實(shí)踐中我遇到stompjs, websocket和nginx的問題與總結(jié)

Steve_Wang_ / 2896人閱讀

摘要:做反向代理是需要注意的問題如果排除所有問題后,那剩下的問題可以考慮出在反向代理上,一下有幾點(diǎn)是可以考慮的。

閱讀原文:https://wdd.js.org/stomp-over...

1. AWS EC2 不支持WebSocket

直達(dá)解決方案 英文版

簡(jiǎn)單說一下思路:WebSocket底層基于TCP協(xié)議的,如果你的服務(wù)器基于HTTP協(xié)議暴露80端口,那WebSocket肯定無法連接。你只要將HTTP協(xié)議修改成TCP協(xié)議就可以了。

這個(gè)問題也會(huì)導(dǎo)致stompjs連不上服務(wù)端,報(bào)什么版本不兼容的日志

然后是安全組的配置:

同樣如果使用了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.old
2. NGINX做反向代理是需要注意的問題

如果排除所有問題后,那剩下的問題可以考慮出在反向代理上,一下有幾點(diǎn)是可以考慮的。

HTTP的版本問題: http有三個(gè)版本,http 1.0, 1.1, 2.0, 現(xiàn)在主流的瀏覽器都是使用http 1.1版本,為了保證更好的兼容性,最好轉(zhuǎn)發(fā)時(shí)不要修改協(xié)議的版本號(hào)

路徑重寫的編解碼問題: NGINX具有路徑重寫功能,如果你使用了該功能,就要考慮問題可能出在這里,因?yàn)镹GINX在路徑重寫時(shí),需要對(duì)路徑進(jìn)行編解碼,有可能在解碼之后,沒有編碼就發(fā)送給后端的服務(wù)器,導(dǎo)致后端服務(wù)器無法對(duì)URL進(jìn)行解碼。

3. IE8 IE9 有沒有簡(jiǎn)單方便支持WebSocket的方案

目前測(cè)試下來,最簡(jiǎn)單方案是基于flash的。參考:https://github.com/gimite/web...

注意該方案需要在WebSocket服務(wù)上的843端口, 提供socket_policy_files, 也可以參考:A PolyFill for WebSockets

網(wǎng)上也有教程是使用socket.io基于ajax長(zhǎng)輪訓(xùn)的方案,如果服務(wù)端已經(jīng)確定的情況下,一般是不會(huì)輕易改動(dòng)服務(wù)端代碼的。而且ajax長(zhǎng)輪訓(xùn)也是有延遲,和disconnect時(shí),無法回調(diào)的問題。

4. stompjs connected后,沒有調(diào)用connect_callBack

該問題主要是使用web-socket-js,在ie8,ie9上出現(xiàn)的

該問題還沒有分析出原因,但是看了stompjs的源碼不是太多,明天用源碼調(diào)試看看原因。

具體原因已經(jīng)找到,參考https://github.com/wangduandu...。

5. 參考文獻(xiàn)

STOMP Over WebSocket

STOMP Protocol Specification, Version 1.1

Stomp Over Websocket文檔,

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39830.html

相關(guān)文章

  • websocket+sockjs+stompjs詳解及實(shí)例

    摘要:面向消息的簡(jiǎn)單文本協(xié)議。為提供了備選方案。但無論哪種場(chǎng)景,對(duì)于實(shí)際應(yīng)用來說,這種通信形式層級(jí)過低。協(xié)議,來為瀏覽器和間的通信增加適當(dāng)?shù)南⒄Z義。協(xié)議解決了瀏覽器發(fā)起請(qǐng)求以及服務(wù)器響應(yīng)請(qǐng)求的細(xì)節(jié),假設(shè)協(xié)議并不存在,只能使用套接字來編寫應(yīng)用。 最近有項(xiàng)目需求要用到websocket,剛開始以為很簡(jiǎn)單,但是隨著遇到問題,深入了解,才知道websocket并不是想象中的那么簡(jiǎn)單,這篇文章主要是...

    remcarpediem 評(píng)論0 收藏0
  • websocket+sockjs+stompjs詳解及實(shí)例

    摘要:面向消息的簡(jiǎn)單文本協(xié)議。為提供了備選方案。但無論哪種場(chǎng)景,對(duì)于實(shí)際應(yīng)用來說,這種通信形式層級(jí)過低。協(xié)議,來為瀏覽器和間的通信增加適當(dāng)?shù)南⒄Z義。協(xié)議解決了瀏覽器發(fā)起請(qǐng)求以及服務(wù)器響應(yīng)請(qǐng)求的細(xì)節(jié),假設(shè)協(xié)議并不存在,只能使用套接字來編寫應(yīng)用。 最近有項(xiàng)目需求要用到websocket,剛開始以為很簡(jiǎn)單,但是隨著遇到問題,深入了解,才知道websocket并不是想象中的那么簡(jiǎn)單,這篇文章主要是...

    keithyau 評(píng)論0 收藏0
  • websocket+sockjs+stompjs詳解及實(shí)例

    摘要:面向消息的簡(jiǎn)單文本協(xié)議。為提供了備選方案。但無論哪種場(chǎng)景,對(duì)于實(shí)際應(yīng)用來說,這種通信形式層級(jí)過低。協(xié)議,來為瀏覽器和間的通信增加適當(dāng)?shù)南⒄Z義。協(xié)議解決了瀏覽器發(fā)起請(qǐng)求以及服務(wù)器響應(yīng)請(qǐng)求的細(xì)節(jié),假設(shè)協(xié)議并不存在,只能使用套接字來編寫應(yīng)用。 最近有項(xiàng)目需求要用到websocket,剛開始以為很簡(jiǎn)單,但是隨著遇到問題,深入了解,才知道websocket并不是想象中的那么簡(jiǎn)單,這篇文章主要是...

    Corwien 評(píng)論0 收藏0
  • WebSocket斷開原因分析,再也不怕為什么又?jǐn)嚅_了

    摘要:閱讀原文把錯(cuò)誤打印出來斷開的原因有很多,最好在斷開時(shí),將錯(cuò)誤打印出來。的字段表示了斷開的原因。有三個(gè)字段需要注意通過分析這三個(gè)字段,一般就可以找到斷開原因是錯(cuò)誤碼,是整數(shù)類型是斷開原因,是字符串表示是否正常斷開,是布爾值。 閱讀原文:https://wdd.js.org/websocket-... 1. 把錯(cuò)誤打印出來 WebSocket斷開的原因有很多,最好在WebSocket斷開時(shí)...

    ingood 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<