Bootstrap

基于Golang和WebSocket打造自已的反向代理

当我们在开发的时候,有时想要把自已开发的接口暴露给其他开发者或者第三方的服务,方便我们调试和排查问题,那就需要某种机制把我们本地的服务接口暴露到互联网上,本文将要介绍如何通过Golang和WebSocket来实现这一功能

为什么我们需要开发自已的代理服务

目前已经有许多可用的代理服务了,比如ngrok和localtunnel,但ngrok有个缺点就是提供的域名只能用几个小时,然后需要新生成新的域名,如果想要固定域名就要花钱,但我们自已实现的代理可以用一个固定的域名,如果给前端同学来调试的话,不用改来改去,很方便。

ggrok简介

flow

ggrok是通过Golang和WebSocket实现的代理应用,你可以通过Github仓库上的Heroku按钮非常方便的部署,然后就可以拥有一个固定的域名了。

如何实现

Step1 在服务器和客户端建立WebSocket连接

服务端基于gorilla,监听WebSocket连接


func (s *Server) Register(w http.ResponseWriter, r *http.Request) {

c, err := upgrader.Upgrade(w, r, nil)

if err != nil {

log.Print
;