Gorilla websocket based simplified client implementation in GO.
This client provides following easy to implement functionality
- Support for emitting and receiving text and binary data
- Data compression
- Concurrency control
- Proxy support
- Setting request headers
- Subprotocols support
- SSL verification enable/disable
To install use
go get github.com/sacOO7/gowebsocketCreate instance of Websocket by passing url of websocket-server end-point
//Create a client instancesocket:=gowebsocket.New("ws://echo.websocket.org/")
Important Note : url to websocket server must be specified with either ws or wss.
- For connecting to server:
//This will send websocket handshake request to socketcluster-serversocket.Connect()package main
import (
"log""github.com/sacOO7/gowebsocket""os""os/signal"
)
funcmain() {
interrupt:=make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
socket:=gowebsocket.New("ws://echo.websocket.org/");
socket.OnConnected=func(socket gowebsocket.Socket) {
log.Println("Connected to server");
};
socket.OnConnectError=func(errerror, socket gowebsocket.Socket) {
log.Println("Recieved connect error ", err)
};
socket.OnTextMessage=func(messagestring, socket gowebsocket.Socket) {
log.Println("Recieved message "+message)
};
socket.OnBinaryMessage=func(data [] byte, socket gowebsocket.Socket) {
log.Println("Recieved binary data ", data)
};
socket.OnPingReceived=func(datastring, socket gowebsocket.Socket) {
log.Println("Recieved ping "+data)
};
socket.OnPongReceived=func(datastring, socket gowebsocket.Socket) {
log.Println("Recieved pong "+data)
};
socket.OnDisconnected=func(errerror, socket gowebsocket.Socket) {
log.Println("Disconnected from server ")
return
};
socket.Connect()
for {
select {
case<-interrupt:
log.Println("interrupt")
socket.Close()
return
}
}
}
socket.SendText("Hi there, this is my sample test message")token:=make([]byte, 4)
// rand.Read(token) putting some random value in tokensocket.SendBinary(token)socket.Close()socket.RequestHeader.Set("Accept-Encoding","gzip, deflate, sdch")
socket.RequestHeader.Set("Accept-Language","en-US,en;q=0.8")
socket.RequestHeader.Set("Pragma","no-cache")
socket.RequestHeader.Set("User-Agent","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36")
- It can be set using connectionOptions by providing url to proxy server
socket.ConnectionOptions= gowebsocket.ConnectionOptions {
Proxy: gowebsocket.BuildProxy("http://example.com"),
}- It can be set using connectionOptions inside socket
socket.ConnectionOptions= gowebsocket.ConnectionOptions {
UseSSL:true,
UseCompression:true,
Subprotocols: [] string{"chat","superchat"},
}- ConnectionOptions needs to be applied before connecting to server
- Please checkout examples/gowebsocket directory for detailed code..
Apache License, Version 2.0