golang go语言 反向 websocket 代理演示代码

golang go语言 反向 websocket 代理演示代码golanggo语言反向websocket代理演示代码通过go语言实现websocket反向代理功能packagemainimport( “fmt” “github.com/fasthttp/websocket” “github.com/valyala/fasthttp” proxy”github.com/yeqown/fasthttp-reverse-proxy” “log”)varupgraders=&websocket.FastHTTPUpgrad

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

golang go语言 反向 websocket 代理演示代码
通过go语言实现websocket反向代理功能

package main

import (
	"fmt"
	"github.com/fasthttp/websocket"
	"github.com/valyala/fasthttp"
	proxy "github.com/yeqown/fasthttp-reverse-proxy"
	"log"
)

var upgraders = &websocket.FastHTTPUpgrader{ 
   
ReadBufferSize:  1024,
WriteBufferSize: 1024,
// 解决跨域问题
CheckOrigin: func(r *fasthttp.RequestCtx) bool { 
   
return true
},
}
//配置代理地址和路径
var (
	proxyServer = proxy.NewWSReverseProxy("192.168.0.62:9960", "/server/PUPPET_SERVER/toId-Server/123123")
)

func ProxyHandler(ctx *fasthttp.RequestCtx) { 
   
	switch string(ctx.Path()) { 
   
	case "/":
		proxyServer = proxy.NewWSReverseProxy("192.168.0.62:9960",string(ctx.Path()))

		proxyServer.ServeHTTP(ctx)
	default:
		proxyServer = proxy.NewWSReverseProxy("192.168.0.62:9960",string(ctx.Path()))
		/*ctx.Error("Unsupported path", fasthttp.StatusNotFound)*/
		proxyServer.ServeHTTP(ctx)
	}
}

func main() { 
   
	proxy.DefaultUpgrader=upgraders
	// 8081为监听端口
	if err := fasthttp.ListenAndServe(":8081", ProxyHandler); err != nil { 
   
		log.Fatal(err)
	}

	fmt.Println("hello")
}

go读取配置文件参考url地址:https://studygolang.com/subject/2

例如:访问地址:ws://127.0.0.1:8081/server/PUPPET_SERVER/toId-Server/456
代理并跳转地址:ws://192.168.0.62:9960/server/PUPPET_SERVER/toId-Server/456

代理是双向的,可以互相发送和接收信息

注:gateway网关也可以做代理功能,但是网关代理限制发送消息大小为64k,所以用go语言编写的代理是最好的选择。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159480.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月26日 上午10:36
下一篇 2022年7月26日 上午10:46


相关推荐

  • ASP .NET DropDownList多级联动事件

    ASP .NET DropDownList多级联动事件思路假如有三级省、市、区,先加载出所有省选择省之后,加载出该省所有市选择市之后,加载出该市所有区重新选择省,则清空市和区重新选择市,则清空区想好数据结构,不同的数据结构做法不同例子数据结构publicclassArea{publicintPKID{get;set;}publicintParentID{get;set;}…

    2025年10月25日
    4
  • 三种常用的数字数据编码方式

    三种常用的数字数据编码方式数字数据编码常用于基带传输中 对于这种编码方式 具体用什么样的数字信号表示 0 或 1 就是编码 衍生出来的编码方式有很多 下面介绍三种最常见的编码方式 不归零码用高 低电压分别来代表 1 0 二进制 相反也可以 优点 1 编码容易缺点 1 没有检错功能 2 无法判断码元的开始和结束 3 无法实现同步曼切斯特编码将一个码元分为相等的两个部分 由高电平到低电平表示

    2026年3月18日
    2
  • 漫步微积分三十四——体积计算:圆柱壳法

    漫步微积分三十四——体积计算:圆柱壳法还有一种去体积的方法,往往它比上篇文章的方法更加方便。为了理解这种方法,考虑图1左边所示的区域,也就是,第一象限数轴和所示示曲线y=f(x)y=f(x)围成的区域。如果这个区域绕xx轴旋转,那么图中的垂直窄带生成一个圆盘,我们能够从x=0x=0到x=bx=b区间上积分这些圆盘的体积得到总体积。当然,这是上篇文章中描述的圆盘法。然而,如果区域绕yy轴旋转,就像图中间的那样,那么我们获得完全不同的物体,

    2022年6月7日
    56
  • OpenClaw火爆全网,TikTok跨境卖家花式“养龙虾”

    OpenClaw火爆全网,TikTok跨境卖家花式“养龙虾”

    2026年3月14日
    2
  • 显卡挖矿怎么安装_显卡挖矿教程

    显卡挖矿怎么安装_显卡挖矿教程一、制作操作系统镜像文件前准备1.下载win10操作系统镜像。下载地址:http://miner.tools/software/142.下载并安装软碟通。3.准备一个U盘。二、制作U盘操作系统镜像文件1.右键单击软碟通,以管理员身份运行:2.在软碟通中打开下载的操作系统镜像:3.插入U盘,点击“启动”下的“写入硬盘映像…”:4.硬盘驱动器选择刚插入的U盘,点格式化:5.在格式化窗口,文件系统选NT…

    2026年4月19日
    8
  • ubuntu与centos的对比和选择「建议收藏」

    ubuntu与centos的对比和选择「建议收藏」一、分别介绍CentOS(CommunityENTerpriseOperatingSystem)是Linux发行版之一,它是来自于RedHatEnterpriseLinux依照开放源代码规定释出的源代码所编译而成。RedHatEnterpriseLinux(RHEL)是企业发行版。它每五年左右更新一次,在系统的稳定性,前瞻性和安全性上有着极大的优势。由于CentOS…

    2025年9月6日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号