|
- package main
-
- import (
- "fmt"
- "github.com/gorilla/websocket"
- "log"
- "net/http"
- )
-
- const apiV1WebSocket = apiV1Prefix + "ws"
-
- // We'll need to define an upgradeToWs
- // this will require a Read and Write buffer size
- var upgradeToWs = websocket.Upgrader{
- ReadBufferSize: 1024,
- WriteBufferSize: 1024,
- }
-
- func apiV1WebSocketHandler(w http.ResponseWriter, r *http.Request) {
- upgradeToWs.CheckOrigin = func(r *http.Request) bool { return true }
- ws, err := upgradeToWs.Upgrade(w, r, nil)
- if err != nil {
- log.Println("cannot upgrade websocket", err)
- return
- }
-
- // helpful log statement to show connections
- log.Println("Websocket Api/V1: Client Connected", r.RemoteAddr)
-
- wsReader(ws)
- }
-
- func wsReader(conn *websocket.Conn) {
- for {
- // read in a message
- messageType, p, err := conn.ReadMessage()
- if err != nil {
- log.Println(err)
- return
- }
-
- WsEchoIncomingMessage(conn, string(p), messageType)
- //switch messageType {
- //case websocket.TextMessage:
- // WsProcessingTxtMessage(conn, string(p))
- // break
- //case websocket.BinaryMessage:
- // WsProcessingBinaryMessage(conn, p)
- // break
- //case websocket.PingMessage:
- // break
- //case websocket.PongMessage:
- // break
- //}
- }
- }
-
- func WsEchoIncomingMessage(conn *websocket.Conn, msg string, messageType int) {
- // print out that message for clarity
- fmt.Println(msg)
-
- // this is echo
- if err := conn.WriteMessage(messageType, []byte(msg)); err != nil {
- log.Println(err)
- return
- }
- }
|