Skip to content

Instantly share code, notes, and snippets.

@Fullstop000
Last active September 30, 2017 06:50
Show Gist options
  • Save Fullstop000/1c6cc2ac4d54c64fb983df007ac4a1aa to your computer and use it in GitHub Desktop.
Save Fullstop000/1c6cc2ac4d54c64fb983df007ac4a1aa to your computer and use it in GitHub Desktop.
Websocket client & server
const url = 'ws://localhost:1234'
let ws = new WebSocket(url,'test_protocol')
ws.onopen = () => {
console.log('Client connection opened')
ws.send('Hello Websocket')
}
ws.onmessage = (event) => {
console.log('Received message : '+ event.data)
}
ws.onclose = () => {
console.log('Close ws')
}
ws.onerror = (event) => {
console.log('Error : ', event)
ws.close()
}
package main
import (
"net/http"
"time"
"github.com/gorilla/websocket"
logging "github.com/op/go-logging"
)
var upgrader *websocket.Upgrader
var logger *logging.Logger
func init() {
logger = logging.MustGetLogger("main")
logging.SetLevel(logging.INFO, "main")
upgrader = &websocket.Upgrader{
HandshakeTimeout: 5 * time.Second,
Subprotocols: []string{"test_protocol"},
CheckOrigin: func(r *http.Request) bool {
return true
},
}
}
func websocketHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
logger.Errorf("Websocket upgrade err : %s", err.Error())
return
}
defer func(conn *websocket.Conn) {
err := conn.Close()
if err != nil {
logger.Errorf("Error closing websocket connection : %s", err.Error())
}
logger.Info("Connection closed")
}(conn)
for {
messageType, message, err := conn.ReadMessage()
if err != nil {
logger.Errorf("Error reading messages from client : %s", err.Error())
break
}
logger.Infof("Received message : %s", string(message[:]))
err = conn.WriteMessage(messageType, []byte("Websocket server"))
if err != nil {
logger.Errorf("Error writing messages : %s", err.Error())
break
}
logger.Info("Send message : Websocket server")
if string(message[:]) == "close ws" {
break
}
}
}
func main() {
http.HandleFunc("/", websocketHandler)
logger.Fatal(http.ListenAndServe(":1234", nil))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment