This is a creation in Article, where the information may have evolved or changed.
Package Mainimport ("FMT" "Golang.org/x/net/websocket" "Log" "Net/http" "OS" "Time") Var (dirpath stringtest bytelenfile int) func check (e error) {if E! = nil {panic (e)}}func chatserver (ws *websocket. Conn) {defer ws. Close () var test []bytevar Payload []bytefor {err: = WebSocket. Message.receive (WS, &payload) if err! = Nil {log. PRINTLN (Err)} FMT. Println ("Payload:", Len (Payload)) test = append (Test, Payload ...) Fmt. Println ("Test:", Len (Test)) FO, err: = OS. Create (FMT. Sprintf ("./%d.png", time. Now (). Unixnano ())) Check (err) _, err = fo. Write (test) Check (ERR) fo. Close ()} log. Print ("Done")}func main () {if Len (OS. Args) < 2 {log. Fatal ("Usage:chatexample <dir>")}dirpath = OS. Args[1]fmt. Println ("Starting ... ") http. Handle ("/", HTTP. Fileserver (http. Dir (Dirpath))) HTTP. Handle ("/ws", WebSocket. Handler (Chatserver)) Err: = http. Listenandserve (": +", nil) if err! = Nil {log. Fatal ("Listenandserve", Err)}}