An open API service indexing awesome lists of open source software.

https://github.com/tukangremot/gows

Websocket server that supports multipurpose
https://github.com/tukangremot/gows

chat-engine chat-server go go-package golang golang-package realtime-chat realtime-messaging websocket websocket-chat websocket-server

Last synced: 3 months ago
JSON representation

Websocket server that supports multipurpose

Awesome Lists containing this project

README

          

# GoWS

## Usage

### Example

#### Simple
```go
package main

import (
"flag"
"fmt"
"log"
"net/http"
"time"

"github.com/gorilla/websocket"
"github.com/tukangremot/gows"
)

var addr = flag.String("addr", ":8080", "http service address")

var upgrader = websocket.Upgrader{
ReadBufferSize: 4096,
WriteBufferSize: 4096,
CheckOrigin: func(r *http.Request) bool {
return true
},
}

func serveWs(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
return
}

client := gows.NewClient(conn)

go client.WritePump()
go client.ReadPump()

// read message
for {
select {
case message := <-client.ReadMessage():
// do something whene receive a message
messageStr := string(message)
fmt.Println(messageStr)

// send message to client
client.SendMessage(message)
case err := <-client.GetError():
if err == gows.ErrClientDisconnected {
// do something if the client disconnects
fmt.Println(err)
} else {
//so something if something else goes wrong
fmt.Println(err)
}
}
}
}

func main() {
http.HandleFunc("/ws", serveWs)

httpServer := &http.Server{
Addr: *addr,
ReadHeaderTimeout: 3 * time.Second,
}

err := httpServer.ListenAndServe()
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}

```