74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"honnef.co/go/js/dom"
|
|
"github.com/gopherjs/websocket/websocketjs"
|
|
"github.com/gopherjs/gopherjs/js"
|
|
"github.com/johanbrandhorst/gopherjs-json"
|
|
"time"
|
|
//"honnef.co/go/js/dom"
|
|
|
|
)
|
|
|
|
var (
|
|
//d = dom.GetWindow().Document() //getting the dom to manipulate it
|
|
document = dom.GetWindow().Document().(dom.HTMLDocument)
|
|
//conn = func(){websocketjs.New("ws://192.168.1.141:8000/websocket")}//creating a global JS websocket connection
|
|
)
|
|
|
|
|
|
func main(){
|
|
document.AddEventListener("DOMContentLoaded", false, func(_ dom.Event){
|
|
println("DOMLoaded...")
|
|
go ready()
|
|
})
|
|
}
|
|
|
|
func ready(){
|
|
|
|
//conn := conn()
|
|
conn, err := websocketjs.New("ws://192.168.1.141:8000/websocket") // Blocks until connection is established.
|
|
|
|
if err != nil {
|
|
println("Error creating client websocket connection") // handle error
|
|
}
|
|
onOpen := func(ev *js.Object){
|
|
err := conn.Send("ping!") //on startup send the ping message
|
|
if err != nil {
|
|
println("Cannot send ping message")
|
|
}
|
|
}
|
|
|
|
onMessage := func(ev *js.Object){
|
|
messageData := ev.Get("data").String()
|
|
if messageData == "pong"{ //if the server says a pong, send a ping back
|
|
time.Sleep(6 * time.Second)
|
|
conn.Send("ping")
|
|
} else {
|
|
clientData, err := json.Unmarshal(messageData)
|
|
if err != nil {
|
|
println("Error unmarshalling server message")
|
|
}
|
|
|
|
println(clientData.String())
|
|
|
|
}
|
|
}
|
|
|
|
onClose := func(ev *js.Object){
|
|
println("Closing Connection....")
|
|
}
|
|
|
|
|
|
onError := func(ev *js.Object){
|
|
println("Error....")
|
|
}
|
|
|
|
conn.AddEventListener("open", false, onOpen)
|
|
conn.AddEventListener("message", false, onMessage)
|
|
conn.AddEventListener("close", false, onClose)
|
|
conn.AddEventListener("error", false, onError)
|
|
|
|
|
|
err = conn.Close()
|
|
} |