Skip to content

Instantly share code, notes, and snippets.

@alirezaarzehgar
Created August 17, 2023 05:09
Show Gist options
  • Save alirezaarzehgar/ab8359e97aaac072e78951b1458aea1b to your computer and use it in GitHub Desktop.
Save alirezaarzehgar/ab8359e97aaac072e78951b1458aea1b to your computer and use it in GitHub Desktop.
Simplest golang websocket chat server
package main
import (
"log"
"net/http"
"github.com/gorilla/websocket"
)
func main() {
var upgrader = websocket.Upgrader{}
var clients = make([]*websocket.Conn, 0)
http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
ws, _ := upgrader.Upgrade(w, r, nil)
clients = append(clients, ws)
go func() {
for {
_, msg, err := ws.ReadMessage()
if err != nil {
log.Println(err)
ws.Close()
return
}
for _, c := range clients {
if c == ws {
continue
}
c.WriteMessage(websocket.TextMessage, msg)
}
}
}()
})
http.ListenAndServe(":8000", nil)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment