Skip to content

WebSocket

Zinc preserves the response-writer interfaces required by WebSocket upgraders. This example uses Gorilla WebSocket:

package main
import (
"log"
"net/http"
"github.com/0mjs/zinc"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return r.Header.Get("Origin") == "https://app.example.com"
},
}
func main() {
app := zinc.New()
app.Get("/ws", func(c *zinc.Context) error {
conn, err := upgrader.Upgrade(c.Writer(), c.Request(), nil)
if err != nil {
return err
}
defer conn.Close()
for {
kind, message, err := conn.ReadMessage()
if err != nil {
return nil
}
if err := conn.WriteMessage(kind, message); err != nil {
return nil
}
}
})
log.Fatal(app.Listen())
}