converge/cmd/converge/sessionhandler.go

56 lines
932 B
Go

package main
import (
"encoding/json"
"log"
"net"
"net/http"
"strconv"
"time"
)
type Message struct {
Type string `json:"type"`
Content string `json:"content"`
}
func sessionHandler(w http.ResponseWriter, r *http.Request, conn net.Conn) {
log.Println("Got sessions websocket connection")
i := 0
for {
time.Sleep(1 * time.Second)
message := Message{
Type: "update",
Content: `
<div id="mycontent">
New data: ` + strconv.Itoa(i) + `
</div>
`,
}
_, err := json.Marshal(message)
if err != nil {
log.Printf("ERROR marshalling json: %v", err)
return
}
//conn.Write(data)
go func() {
for {
b := make([]byte, 1024)
_, err := conn.Read(b)
if err != nil {
return
}
}
}()
_, err = conn.Write([]byte(message.Content))
if err == nil {
_, err = conn.Write([]byte("\n"))
}
if err != nil {
log.Printf("ERROR sending message: %v", err)
return
}
i++
}
}