|
@@ -0,0 +1,49 @@
|
|
|
|
+package main
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "flag"
|
|
|
|
+ "fmt"
|
|
|
|
+ "log"
|
|
|
|
+ "net/http"
|
|
|
|
+
|
|
|
|
+ "github.com/gorilla/websocket"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+var addr = flag.String("addr", "localhost:8080", "http service address")
|
|
|
|
+
|
|
|
|
+var upgrader = websocket.Upgrader{
|
|
|
|
+ // 解决跨域问题
|
|
|
|
+ CheckOrigin: func(r *http.Request) bool {
|
|
|
|
+ return true
|
|
|
|
+ },
|
|
|
|
+} // use default options
|
|
|
|
+
|
|
|
|
+func ws(w http.ResponseWriter, r *http.Request) {
|
|
|
|
+ c, err := upgrader.Upgrade(w, r, nil)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Print("upgrade:", err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer c.Close()
|
|
|
|
+ for {
|
|
|
|
+ mt, message, err := c.ReadMessage()
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("read:", err)
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ log.Printf("recv: %s", message)
|
|
|
|
+ err = c.WriteMessage(mt, message)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("write:", err)
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func main() {
|
|
|
|
+ flag.Parse()
|
|
|
|
+ log.SetFlags(0)
|
|
|
|
+ http.HandleFunc("/ws", ws)
|
|
|
|
+ fmt.Println(*addr)
|
|
|
|
+ log.Fatal(http.ListenAndServe(*addr, nil))
|
|
|
|
+}
|