실천 과정 에서 나 는 stompjs, websocket 과 nginx 의 문제 와 총 결 을 만 났 다.

원문 읽 기:https://wdd.js.org/stomp-over...
1. AWS EC2 는 WebSocket 을 지원 하지 않 습 니 다.
직통 솔 루 션 영문 판
간단하게 말하자면 웹 소켓 밑 에 TCP 프로 토 콜 을 기반 으로 하 는 서버 가 HTTP 프로 토 콜 을 기반 으로 80 포트 를 노출 한다 면 웹 소켓 은 연결 할 수 없 을 것 입 니 다. 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.old

2. NGINX 가 역방향 대 리 를 하 는 것 은 주의해 야 할 문제 이다.
모든 문 제 를 배제 한 후에 남 은 문 제 는 역방향 대리 에서 고려 할 수 있 고 몇 가 지 는 고려 할 수 있다.
  • HTTP : http 는 세 가지 버 전이 있 습 니 다. http 1.0, 1.1, 2.0 입 니 다. 현재 주류 브 라 우 저 는 http 1.1 버 전 을 사용 하고 있 습 니 다. 더 좋 은 호환성 을 확보 하기 위해 리 트 윗 할 때 협의의 버 전 번 호 를 수정 하지 않 는 것 이 좋 습 니 다
  • : NGINX 는 경로 재 작성 기능 을 가지 고 있 습 니 다. 이 기능 을 사용 하면 문제 가 여기에 있 을 수 있 습 니 다. NGINX 는 경로 재 작성 시 경 로 를 디 코딩 해 야 하기 때문에 디 코딩 후에 인 코딩 없 이 백 엔 드 서버 에 보 내 서 백 엔 드 서버 가 URL 을 디 코딩 하지 못 할 수도 있 습 니 다.

  • 3. IE8 IE9 는 웹 소켓 을 간단하게 지원 하 는 방안 이 있 습 니까?
    현재 테스트 에서 가장 간단 한 방안 은 플래시 에 기반 한 것 이다.참고:https://github.com/gimite/web...
    이 방안 은 웹 소켓 서비스 에 있 는 843 포트 에서 socket 을 제공 해 야 합 니 다.policy_files, 참고: A PolyFill for WebSockets
    인터넷 에서 도 socket. io 를 사용 하여 ajax 장 윤 훈 을 기반 으로 하 는 방안 이 있 습 니 다. 서버 가 확 정 된 경우 서버 코드 를 쉽게 바 꾸 지 않 습 니 다.또한 ajax 장 륜 훈련 도 지연 되 고 disconnect 와 는 되 돌 릴 수 없 는 문제 입 니 다.
    4. stompjs 가 연 결 된 후 connect 를 호출 하지 않 았 습 니 다.callBack
    이 문 제 는 주로 웹 - socket - js 를 사용 하여 ie8, ie9 에 나타 난 것 이다.
    이 문 제 는 아직 원인 을 분석 하지 못 했 지만 stompjs 의 소스 코드 가 그리 많 지 않 아서 내일 소스 코드 로 디 버 깅 하여 원인 을 보 았 다.
    구체 적 인 원인 은 이미 찾 았 으 니 참고 하 시 오https://github.com/wangduandu...。
    5. 참고 문헌
  • STOMP Over WebSocket
  • STOMP Protocol Specification, Version 1.1
  • Stomp Over Websocket 문서
  • 좋은 웹페이지 즐겨찾기