前端websocket连接开发时devserver代理配置及nginx代理配置

2023-11-07

页面代码:

socketUrl = "ws://" + location.host + "/websocket/ws?uid=1";
// location.host即前端服务部署地址
      var socket = new WebSocket(socketUrl);
      // 打开事件
      socket.onopen = function() {
        console.log("Socket 已打开");
        socket.send("这是来自客户端的消息" + location.href + new Date());
      };
      // 获得消息事件
      socket.onmessage = function(msg) {
        console.log(msg?.data, 140);
      };
      // 关闭事件
      socket.onclose = function() {
        console.log("Socket已关闭");
      };
      // 发生了错误事件
      socket.onerror = function() {
        console.log("发生了错误");
      };

devserver 跨域代理配置

  "/websocket": {
                target: 'ws://10.180.145.228:12345',
                ws: true,
                changeOrigin: true,
                logLevel: 'debug',
                secure: false,
                pathRewrite: {
                    "^/websocket": ""
                }
            },

或者nginx 代理配置

http {

  upstream sdwan_ws{
        server 10.180.146.79:9999;
    }

  server {
    listen       80;
    server_name localhost;
    access_log /var/log/nginx/yourdomain.log;

   location / {
            root   html;
            index  index.html index.htm;
        }
	}
	 location /websocket {
            proxy_pass   http://sdwan_ws;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            add_header Access-Control-Allow-Origin *; 

            proxy_set_header Upgrade websocket;
            proxy_set_header Connection Upgrade;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            rewrite /websocket/(.*) /$1 break;
        }
}

最重要的就是在反向代理的配置中增加了如下两行,其它的部分和普通的HTTP反向代理没有任何差别

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;

设置后会在HTTP的请求中多了如下头部:

Upgrade: websocket
Connection: Upgrade

表示请求服务器升级协议为WebSocket。

当状态未101时连接成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端websocket连接开发时devserver代理配置及nginx代理配置 的相关文章

  • 如果我在不打算升级到 websocket 连接的 HTTP 请求中包含“Upgrade”和“Connection”标头,会发生什么情况?

    我有一个 Nginx 服务器块 用于代理对 node js 服务器的请求 该服务器同时提供 HTTP 内容和 WS websocket 内容 是否可以在不应升级到 Websocket 连接的请求上添加升级标头 即使用 Nginx 代理到服务
  • Nginx 中 uwsgi_pass 和 proxy_pass 的区别?

    我在 Nginx 后面运行 uWSGI 并一直在使用proxy pass让 Nginx 访问 uWSGI 切换到有什么好处吗uwsgi pass 如果是这样 那是什么 uwsgi pass使用一个uwsgi协议 proxy pass使用普通
  • 带 cookie 身份验证的 Gorilla websocket

    这是我的设置 我正在构建一个带有用户登录的服务 使用 Negroni 和 Gorilla 登录后 用户会获得一个会话 cookie 服务器使用该会话 cookie 来授权受保护的端点 受保护的端点之一允许用户 客户端与服务器打开 Webso
  • Nginx反向代理返回404

    我的 Nginx 安装并运行 下面是配置 etc nginx nginx conf 我要全部转发 api 到我的 tomcat 服务器 该服务器在同一服务器上的端口 9100 上运行 类型http myhost 9100 api apps有
  • 如何在位置中使用 Nginx Regexp

    Web 项目将静态内容放入 some content img 文件夹中 url规则为 img some md5 但文件夹中的位置 content img 前两位数字 Example url example com img fe5afe048
  • nginx 匹配位置中的特定单词

    我在匹配 nginx request body 变量中的特定单词时遇到问题 如果正文请求中有特殊单词 我想代理传递 所以我的方法是这样的 location php if request body proxy pass http test p
  • 客户端如何获取session id? (网络套接字)

    有什么办法可以做到这一点吗 客户端 function connectWebSocket var socket new SockJS socket stompClient Stomp over socket stompClient conne
  • 关闭旧的 php websocket

    我在用PHP Websockets https github com ghedipunk PHP Websockets创建一个简单的聊天服务器 当我第一次运行在我的服务器上创建 websocket 的 php 脚本时 一切正常 如果脚本由于
  • nginx位置正则表达式,匹配多次

    如何在 nginx 位置正则表达式中多次匹配 看来 x x 语法永远不起作用 例如 location abc w 1 3 从来不工作 您必须引用包含以下内容的位置 or 人物 location abc w 1 3 否则 nginx 将其解析
  • 如何终止 Websocket 连接?

    如何终止 Websocket 连接 我不是在谈论关闭两端的连接 而是在 中间 中断它 我需要测试重新连接时必须发生的一些应用程序逻辑 通过 SocketIO 处理 不 拔掉网络电缆不算数 因为我无法在单元测试中真正实现自动化 此外 我希望只
  • NGINX 上的 SSL 终止

    我已经购买了 SSL 证书 并在验证模数时正确地将其捆绑在一起 即https kb wisc edu middleware 4064 https kb wisc edu middleware 4064 那么哈希值是相同的 我已将证书和密钥移
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • 抑制 nginx 访问被拒绝错误日志

    我在 nginx 中设置了一些规则来拒绝 IP 访问 这很有效 但对于来自被拒绝 IP 的每个请求 都会记录以下开头的错误 error 7325 0 5761 access forbidden by rule client 有没有办法抑制这
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 为什么我会收到 ElasticBeanstalk::ExternalInitationError?

    我的应用程序基于 RubyOnRails 构建 并使用乘客部署为弹性 beanstalk 应用程序 我尝试向 nginx 服务器添加标头并重新启动它 这是我的配置文件 是 aws elastic beanstalk 中 ebextensio

随机推荐

  • js获取指定日期所在月份的第一天和最后一天,并遍历

    1 获取月份的第一天和最后一天 获取指定日期所在月份的第一天和最后一天 function getfirstDateAndlastDate dateStr let date new Date dateStr let year date get
  • npm-cli----Cannot find module 'D:\node\nodejs\node_module\bin\npm-cli.js'

    我输入 npm init 报这个错 输入 npm v 想查看npm的版本也是这个错 自己试着全局安装npm cli 还是这个错 反正只要和npm有关的命令通通是这个错 之后就开始我的百度之旅 发现根本就没一个帖子有用 该错还是错 我来说下我
  • 配置虚拟机桥接网络的步骤

    一 先打开虚拟机 然后点击左上角的编辑选项 然后点击虚拟网络编辑器 二 设置成桥接模式 并选择自动模式 然后点击确定 三 然后点击虚拟机内右上角的三个方块的图标 如图所示 四 点击有线连接下的齿轮图标 五 需要手动配置IPv4和IPv6网络
  • 二极管的工作原理,什么是二极管?

    二极管是一种电子器件 具有两不对称电导的电极 故名 二极 只允许电流由单一方向流过 所以最常应用其整流功能 二极管的工作原理 什么是二极管 二极管具有阳极和阴极两个端子 电流只能往单一方向流动 也就是说 电流可以从阳极流向阴极 而不能从阴极
  • 使用php语言开Excel的导入功能

    使用 PHP 语言开发 Excel 导入功能 你需要使用 PHPExcel 库 首先 你需要在你的 PHP 项目中安装 PHPExcel 库 你可以使用 Composer 来安装 如下所示 composer require phpoffic
  • C语言航空订票系统课程设计

    目录 1 设计目的 2总体设计和功能 3 菜单设计 4 各功能代码详解 闲话少扯 4 1 C语言文件的操作 4 2 读取航班信息 C语言知识回顾 4 3 打印航班信息 5 根据要求查找航班 航班号 起点站 终点站 6 订票功能 链表操作 前
  • STM32 HAL库:FreeRTOS系统 (带推荐使用除了Systick以外的时钟源问题及解决)

    1 简介 FreeRTOS是一个实时操作系统内核 作为一个轻量级的操作系统 功能包括 任务管理 时间管理 信号量 消息队列 内存管理 记录功能 软件定时器 协程等 可基本满足较小系统的需要 任务调度机制 优先级高的任务一旦就绪就能剥夺优先级
  • 在Android中使用Qt作为共享系统库

    Using Qt as shared system libraries in Android 在Android中使用Qt作为共享系统库 October 21 2022 by Tinja Paavosepp Comments 2022年10月
  • 如何在本地部署运行ChatGLM-6B

    在本篇技术博客中 将展示如何在本地获取运行代码和模型 并配置环境以及 Web GUI 最后通过 Gradio 的网页版 Demo 进行聊天 官方介绍 ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General La
  • selenium(练习)提取dou yu网站上的数据

    运行代码时 它会打开斗鱼网站并逐个打印每个房间的相关信息 打印出每个房间的标题 类型 所有者 观看人数和封面图片 import time from selenium import webdriver class Douyu object d
  • 基于HTTP协议的API接口测试

    一 接口组成 请求 返回 接口请求 请求的URL 请求头 User Agent Content Type 请求方法 GET POST PUT DELEte 请求参数 拼接在URL 后面 请求的body中 二 接口测试关注点 三 postma
  • 2006年100首好歌

    快三秒音乐网收集的2006年网络点击最TOP100首流行歌曲 地址 http www k111 com musiclist k111 13703 htm1 千里之外 周杰伦 http www k111 com musiclist 10 72
  • 手刃一个小爬虫

    from urllib request import urlopen url https www baidu com resp urlopen url with open mybaidu html mode w as f f write r
  • ***.forEach is not a function

    forEach is not a function 缘起 在这里插入图片描述 原生js获取的DOM集合是一个类数组对象 不能直接利用数组的方法 例如 forEach map等 需要进行转换为数组后 才能用数组的方法 1 推荐几种转换成数组的
  • leetcode刷题笔记:两数之和

    题目链接 牺牲空间换时间 使用一个数组记录下遍历的数和target之间的差值 每遍历一个数查找差值列表是否存在该数 class Solution public int twoSum int nums int target int i int
  • Arduino数字滤波设计方法(Python测试滤波示例)和异常值过滤算法

    数字滤波设计 数字信号处理的目的是在数字系统上执行 而不是在模拟电路上进行操作 通过这种方式 它基于软件执行相同的任务 而不需要电子材料或更换 这种方法确保设计简单且可升级 比如用RC元件制作的模拟滤波器 就需要改变材料来改变滤波器的截止频
  • Docker使用阿里云镜像加速器

    登录阿里云控制台 搜索容器镜像服务 界面上没有可以在搜索框中搜索 进入容器镜像服务管理控制台 如果需要开通就按照提示开通一下 如下图所示 在容器镜像服务控制台最底下有个镜像加速器 点进去之后有一个加速器地址 使用这个地址作为docker镜像
  • FreeRTOS ------- 任务(task)

    在学习RTOS的时候 个人觉得带着问题去学习 会了解到更多 1 什么是任务 在FreeRTOS中 每个执行线程都被称为 任务 每个任务都是在自己权限范围内的一个小程序 其具有程序入口每个任务都是在自己权限范围内的一个小程序 其具有程序入口通
  • 中断模式中中断和事件的区别_C中中断和继续之间的区别

    中断模式中中断和事件的区别 In this tutorial you will learn about difference between break and continue in C 在本教程中 您将了解C语言中break和conti
  • 前端websocket连接开发时devserver代理配置及nginx代理配置

    页面代码 socketUrl ws location host websocket ws uid 1 location host即前端服务部署地址 var socket new WebSocket socketUrl 打开事件 socket