zoukankan      html  css  js  c++  java
  • springclould nginx转发 websocket400报错问题

    之前一直找原因一直围绕着nginx转发的问题

    说头信息没设置全

    然后nginx配置文件上加了这些

    #http块加以下几行:
    map $http_upgrade $connection_upgrade {
    
            default upgrade;
    
            '' close;
    
        }
    #sever块加以下几行:

    location / {
                    proxy_pass http://localhost:8001;
                    proxy_http_version 1.1;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
            }

    配置完发现还是没有效果,

    最后发现自己项目用的是微服务spingCloud

    还得在ZUUL网关配置一个websocket过滤器

    package com.power.bos.filter;
    
    import com.netflix.zuul.ZuulFilter;
    import com.netflix.zuul.context.RequestContext;
    import org.springframework.stereotype.Component;
    
    import javax.servlet.http.HttpServletRequest;
    
    @Component
    public class WebSocketFilter extends ZuulFilter {
        @Override
        public String filterType() {
            return "pre";
        }
    
        @Override
        public int filterOrder() {
            return 4;
        }
    
        @Override
        public boolean shouldFilter() {
            return true;
        }
    
        @Override
        public Object run() {
            RequestContext context = RequestContext.getCurrentContext();
            HttpServletRequest request = context.getRequest();
            String upgradeHeader = request.getHeader("Upgrade");
            context.getResponse().setHeader("X-Frame-Options", "SAMEORIGIN");
            if (null == upgradeHeader) {
                upgradeHeader = request.getHeader("upgrade");
            }
            if (null != upgradeHeader && "websocket".equalsIgnoreCase(upgradeHeader)) {
                context.addZuulRequestHeader("connection", "Upgrade");
    //            context.addZuulRequestHeader("X-Frame-Options", "SAMEORIGIN");
            }
            return null;
        }
    }

    就解决了上图的两个问题了

    红色那块是针对第二个报错的

    最后解决

    2018.7.9

      后来发现这种方式还是不好,连接有延迟,要等个几秒才连接成功,这样严重影响用户体验,后来还是弃用了

  • 相关阅读:
    js和jquery获取图片真实的宽度和高度
    Python中为feedparser设置超时时间教程
    sql 聚合函数、排序方法详解
    BUAAMOOC项目终审报告
    BUAAMOOC项目M2 postmortem
    Beta阶段发布说明
    Beta版本测试报告
    2-Twenty Fifth Scrum Meeting-20151231
    2-Twenty Fourth Scrum Meeting-20151230
    2-Twenty third Scrum Meeting-20151229
  • 原文地址:https://www.cnblogs.com/syp172654682/p/9254669.html
Copyright © 2011-2022 走看看