Commit 7de56999 authored by Chunchi Che's avatar Chunchi Che

add websocket handler

parent 96e3edd8
module github.com/sktt1ryze/ygopro-proxy module github.com/sktt1ryze/ygopro-proxy
go 1.17 go 1.17
require github.com/gorilla/websocket v1.5.0 // indirect
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
...@@ -2,8 +2,71 @@ package main ...@@ -2,8 +2,71 @@ package main
import ( import (
"fmt" "fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
) )
const TARGET_PORT = ":8000"
const PROXY_PORT = ":3344"
var upgrader = websocket.Upgrader{
ReadBufferSize: 0x1000,
WriteBufferSize: 0x1000,
}
func homePage(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Home Page")
}
func ygoEndpoint(w http.ResponseWriter, r *http.Request) {
upgrader.CheckOrigin = wsChecker
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Fatal(err)
}
defer ws.Close()
log.Println("Websocket connected")
proxyHandler(ws)
}
func proxyHandler(ws *websocket.Conn) {
// todo: spawn channel
for {
messageType, buf, err := ws.ReadMessage()
if err != nil {
log.Fatal(err)
return
}
if messageType == websocket.CloseMessage {
log.Println("Websocket closed")
return
}
fmt.Println(string(buf))
if err := ws.WriteMessage(messageType, buf); err != nil {
log.Fatal(err)
return
}
}
}
func wsChecker(r *http.Request) bool { return true }
func setupRoutes() {
http.HandleFunc("/", homePage)
http.HandleFunc("/ygo", ygoEndpoint)
}
func main() { func main() {
fmt.Println("hello, ygopro-proxy") setupRoutes()
log.Fatal(http.ListenAndServe(TARGET_PORT, nil))
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment