package main import ( "log" "net" "github.com/gorilla/websocket" ) type ClientHandler struct { SocketListenOn string WebsocketServer string } func (h *ClientHandler) ServiceConnection(proxyconn net.Conn) { defer proxyconn.Close() wsconn, _, err := websocket.DefaultDialer.Dial(h.WebsocketServer, nil) if err != nil { log.Println(err) return } defer wsconn.Close() log.Println("Connected to server") serviceBoth(wsconn, proxyconn) } func (h *ClientHandler) Run() { listener, err := net.Listen("tcp", h.SocketListenOn) if err != nil { log.Printf("error: Run: %s", err) return } for { conn, err := listener.Accept() if err != nil { log.Printf("error: Run: %s", err) continue } go h.ServiceConnection(conn) } }