67 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"crypto/tls"
"fmt"
"log"
"net"
"net/http"
"yuchat-proxy/common"
"github.com/gorilla/websocket"
)
const (
tcpAddress = "172.20.0.1:1080"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true // 允许来自任何来源的连接
},
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("有新的客户端连接了")
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println("websocket连接失败:", err)
return
}
remoteConn, err := net.Dial("tcp", tcpAddress)
if err != nil {
log.Printf("本地服务连接失败 %s: %v", tcpAddress, err)
return
}
fmt.Println("本地服务启动成功", tcpAddress)
go common.WsToTcpHandler(remoteConn, conn)
go common.TcpToWsHandler(remoteConn, conn)
}
// HTTP GET 接口,返回 "Hello, World!"
func helloHandler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK) // 设置状态码为 200 OK
w.Header().Set("Content-Type", "text/plain") // 设置响应内容类型
_, err := w.Write([]byte("Hello, World!"))
if err != nil {
log.Println("Write failed:", err)
}
}
func main() {
server := &http.Server{
Addr: ":8080",
TLSConfig: &tls.Config{
InsecureSkipVerify: true, // 可选
},
}
http.HandleFunc("/ws", wsHandler)
http.HandleFunc("/hello", helloHandler)
fmt.Println("WebSocket服务已启动地址ws://localhost:8080/ws")
if err := server.ListenAndServe(); err != nil {
log.Fatalf("Server failed: %s", err)
}
}