Skip to content

leetcode-golang-classroom/golang-sample-with-coder-websocket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

golang-sample-with-coder-websocket

This repository is for demo how to use library coder-websocket to handle websocket protocol in golang

setup

go get github.com/coder/websocket

處理邏輯

package echo

import (
	"log"
	"net/http"

	"github.com/coder/websocket"
)

type Handler struct{}

// SetupRoute - 設定 route
func (h *Handler) SetupRoute(router *http.ServeMux) {
	// 設定 websocket 處理
	router.HandleFunc("/ws", h.Echo)
}

func NewRoute() *Handler {
	return &Handler{}
}

func (h *Handler) Echo(w http.ResponseWriter, r *http.Request) {
	conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{
		InsecureSkipVerify: true, // Disable origin verification
	})
	if err != nil {
		log.Println("Failed to accept connection:", err)
		return
	}
	defer conn.Close(websocket.StatusNormalClosure, "")
	// setup listen websocket event loop
	for {
		msgType, data, err := conn.Read(r.Context())
		if websocket.CloseStatus(err) != -1 {
			log.Println("Connection closed:", err)
			return
		}
		if err != nil {
			log.Println("Read error:", err)
			return
		}

		log.Printf("Received: %s\n", data)

		err = conn.Write(r.Context(), msgType, data)
		if err != nil {
			log.Println("Write error:", err)
			return
		}
	}
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages