Last active
March 3, 2020 21:27
-
-
Save LemoNode/47439b0272660ca86595d4b609e545ed to your computer and use it in GitHub Desktop.
Standard localserver websocket
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"flag" | |
"html/template" | |
"log" | |
"net/http" | |
"github.com/gorilla/websocket" | |
) | |
type Data struct { | |
Name string | |
ID int | |
} | |
const index = "index.html" | |
const port = "localhost:8080" | |
var upgrader = websocket.Upgrader{} | |
func echo(w http.ResponseWriter, r *http.Request) { | |
var test []Data | |
test = append(test, Data{Name: "Robert", ID: 12}) | |
data := map[string]interface{} { | |
"Data": test, | |
} | |
c, err := upgrader.Upgrade(w, r, nil) | |
if err != nil { | |
log.Print("upgrade:", err) | |
return | |
} | |
defer c.Close() | |
for { | |
_, message, err := c.ReadMessage() | |
if err != nil { | |
log.Println("read:", err) | |
break | |
} | |
log.Printf("recv: %s", message) | |
if err = c.WriteJSON(data["Data"]); err != nil { | |
log.Println(err) | |
break | |
} | |
} | |
} | |
func home(w http.ResponseWriter, r *http.Request) { | |
t := template.Must(template.New("").Parse(` | |
<head> | |
<meta charset="utf-8"> | |
</head> | |
<body> | |
<script> | |
var socket = new WebSocket("ws://" + document.location.host + "/echo"); | |
socket.onopen = function(evt) { | |
console.log("OPEN"); | |
} | |
socket.onmessage = function(evt) { | |
console.log(JSON.parse(evt.data)) | |
console.log("RESPONSE: " + evt.data); | |
} | |
// ws.send(input.value); | |
</script> | |
</body>`)) | |
// t := template.Must(template.ParseGlob(index)) | |
// t.ExecuteTemplate(w, index, nil) | |
t.Execute(w, index) | |
} | |
func main() { | |
var addr = flag.String("addr", port, "http service address") | |
flag.Parse() | |
log.SetFlags(0) | |
http.HandleFunc("/echo", echo) | |
http.HandleFunc("/", home) | |
log.Fatal(http.ListenAndServe(*addr, nil)) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment