LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

nginx代理WebSocket

admin
2025年6月28日 22:21 本文热度 109

配置

HTTP/1.1协议中Upgrade机制可以将http升级到WebSocket,实现客户端与服务端的双向通讯。

客户端需要升级协议时在请求头包含Upgrade、Connection字段。

如果服务端同意升级连接,就会返回101状态码和一个Upgrade标头字段,Upgrade字段内容为要切换到的协议。

如果服务器不能升级连接,返回一个常规响应,如200 ok。

nginx实现代理WebSocket,在转发请求时需要在请求头中包含Upgrade、Connection两个字段。

Upgrade表示希望升级到的协议,值从客户端请求中取。

Connection值为upgrade时表示希望升级的协议,为close时表示关闭连接。配置案例:

map $http_upgrade $connection_upgrade {
 # 客户端请求头中存在Upgrade字段时,$connection_upgrade变量值为upgrade
 default upgrade;
 # 客户端请求中没有Upgrade,变量值为close
 '' close;
}

upstream proxy_websocket {
 server 192.168.1.16:6066;
}

server {
 listen 6066;
 location / {
  proxy_pass http://proxy_websocket;
  # 只有HTTP/1.1协议提供Upgrade机制,HTTP/2 明确禁止使用此机制
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection $connection_upgrade;
 }
}

验证

  1. 安装依赖包 npm install ws

  2. 搭建WebSocket服务,server.js:

    const { Server } = require("ws");

    const server = new Server({ port: 6066 });

    console.log("WebSocket服务监听6066端口...");

    server.on("connection", (client) => {
      console.log("建立新连接");
      client.on("message", (msg) => {
        console.log("收到客户端消息:%s", msg);
        // 给客户端发送消息
        client.send(Math.random());
      });

      client.on("close", () => {
        console.log("与客户端的连接断开");
      });
    });

  3. 启动服务 node server.js

  4. WebSocket客户端,client.js:

    const WebSocket = require("ws");

    // WebSocket连接nginx代理服务器192.168.1.18
    const socket = new WebSocket("ws://192.168.1.18:6066/");

    socket.on("open", () => {
      console.log("与WebSocket服务端连接成功");
      socket.send("hello world");
    });

    socket.on("message", (data) => {
      console.log("收到消息:" + data.toString());
    });

    socket.on("close", () => {
      console.log("WebSocket关闭");
    });

    socket.on("error", (err) => {
      console.error("WebSocket错误:", err);
    });
  5. 启动客户端,node client.js


阅读原文:原文链接


该文章在 2025/7/1 23:46:32 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved