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


相关推荐

  • 1442. 形成两个异或相等数组的三元组数目[通俗易懂]

    1442. 形成两个异或相等数组的三元组数目[通俗易懂]给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ … ^ arr[j – 1]b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]注意:^ 表示 按位异或 操作。请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。示例 1:输入:arr = [2,3,1,6,7]

    2022年8月9日
    1
  • 开机弹出sysloader.exe应用程序错误

    开机弹出sysloader.exe应用程序错误
    反间谍专家查杀硬盘
    黄山ie修复专家修复ie
    搜索电脑上sysloader的文件,找到后删除
    就ok

    2022年10月24日
    0
  • 大数据与云计算物联网的关系文献_云计算的概念

    大数据与云计算物联网的关系文献_云计算的概念云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者既有区别又有联系。云计算最初主要包含了两类含义:一类是以谷歌的GFS和MapReduce为代表的大规模分布式并行计算技术;另一类是以亚马逊的虚拟机和对象存储为代表的“按需租用”的商业模式。但是,随着大数据概念的提出,云计算中的分布式计算技术开始更多地被列入大数据技术,而人们提到云计算时,更多指的是底层基础IT资源的整合优化…

    2022年10月7日
    0
  • 解决windows update 8024402C错误[通俗易懂]

    解决windows update 8024402C错误[通俗易懂]安装了2003SP1更新时总是会有8024402C错误错误网上daimoon兄的解决方式他的机器在ISASERVER后而我的机器是ISASERVER2004网上daimoon兄的解决方式他的机器在ISASERVER后环境:windowsxpsp1,位于isaserver后问题:使用windowsautoupdate后出错误提示:0x8024402C…

    2022年5月30日
    168
  • mediumtext_text长度不够用,改为mediumtext感觉 又太大,有没什么方法?

    mediumtext_text长度不够用,改为mediumtext感觉 又太大,有没什么方法?楼主先要搞清楚,text和longtext这些都是可变长度的字段类型.这是phpMyAdmin里的说明:text:最多存储65535(2^16-1)字节的文本字段,存储时在内容前使用2字节表示内容的字节数.longtext:最多存储4294967295字节即4GB(2^32-1)的文本字段,存储时在内容前使用4字节表示内容的字节数.也就是说,你在longtext类型的字段里只存1个字符,占用空…

    2022年5月1日
    79
  • mac系统webstorm快捷键

    mac系统webstorm快捷键WebStorm是jetbrains公司旗下一款JavaScript开发工具。被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaSscriptIDE”等。与IntelliJIDEA同源,继承了IntelliJIDEA强大的JS部分的功能.现将最常用的快捷键挑出来备忘,既能方便记忆,又能提高工作效率。快捷键作用…

    2022年5月23日
    42

发表回复

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

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