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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • debounce实现 js_前端面试题——自己实现debounce

    debounce实现 js_前端面试题——自己实现debounce前端面试,总会被问到这类问题:你知道debounce是什么么?你知道debounce什么时候用么?来来来,能给我实现一个debounce么?了解debounce以及实现方法,不仅会帮助我们面试,也是对我们技术的一次提升。废话不说,来不及了,我们一起学习debounce。什么是debounce?什么时候使用debounce?翻看Underscore的文档,它是这么描述debounce的:返回fun…

    2022年6月20日
    30
  • 如何在Linux系统上刷抖音

    如何在Linux系统上刷抖音如何在linux系统上刷抖音

    2022年5月27日
    40
  • Java虚拟机:class类文件结构

    Java虚拟机:class类文件结构

    2021年9月26日
    40
  • EBC外汇交易平台_ecn外汇交易商排名

    EBC外汇交易平台_ecn外汇交易商排名外汇凭借公开透明、交易公平、24小时实时交易、高倍杠杆等独特的优势备受投资者推崇。相比于其他产品,外汇交易更需要做好风险和收益的动态平衡,建议投资者在选择投资平台时,优先选择专业高效的金融券商。EBC金融投资平台凭借其安全与收益的双重保障,受到越来越多投资者的追捧。安全保障:FCA+ASIC双认证通过,搭起坚实投资防护墙EBC金融始终将合规专业、为客户提供最大限度的资金安全保障作为基本要求,积极付出行动。EBC金融自成立初期起,将所有的资金都托管在世界顶级银行,接受监管机构严格、健全的监管体系之严格

    2025年10月18日
    3
  • NOIP2011题解

    NOIP2011题解D1T1.铺地毯题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯,一共有n张地毯,编号从1到n。现在将这些地毯按照编号从小到大

    2022年7月3日
    25
  • 常用设计模式总结

    常用设计模式总结设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中…

    2022年7月16日
    16

发表回复

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

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