diff --git a/README.md b/README.md index 2439bc6..d2a6595 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,14 @@ Create instance of `Websocket` by passing url of websocket-server end-point socket.SendBinary(token) ``` +#### Sending JSON Data +```go + json_data := map[string]string { + "Key": "Value" + } + socket.SendJSON(json_data) +``` + #### Closing the connection with server ```go socket.Close() diff --git a/gowebsocket.go b/gowebsocket.go index 1ea2b0d..a584d52 100644 --- a/gowebsocket.go +++ b/gowebsocket.go @@ -1,14 +1,15 @@ package gowebsocket import ( - "github.com/gorilla/websocket" - "net/http" - "errors" "crypto/tls" + "errors" + "net/http" "net/url" - "sync" - "github.com/sacOO7/go-logger" "reflect" + "sync" + + "github.com/gorilla/websocket" + logging "github.com/sacOO7/go-logger" ) type Empty struct { @@ -21,7 +22,7 @@ func (socket Socket) EnableLogging() { } func (socket Socket) GetLogger() logging.Logger { - return logger; + return logger } type Socket struct { @@ -32,7 +33,7 @@ type Socket struct { RequestHeader http.Header OnConnected func(socket Socket) OnTextMessage func(message string, socket Socket) - OnBinaryMessage func(data [] byte, socket Socket) + OnBinaryMessage func(data []byte, socket Socket) OnConnectError func(err error, socket Socket) OnDisconnected func(err error, socket Socket) OnPingReceived func(data string, socket Socket) @@ -46,7 +47,7 @@ type ConnectionOptions struct { UseCompression bool UseSSL bool Proxy func(*http.Request) (*url.URL, error) - Subprotocols [] string + Subprotocols []string } // todo Yet to be done @@ -55,7 +56,7 @@ type ReconnectionOptions struct { func New(url string) Socket { return Socket{ - Url: url, + Url: url, RequestHeader: http.Header{}, ConnectionOptions: ConnectionOptions{ UseCompression: false, @@ -75,7 +76,7 @@ func (socket *Socket) setConnectionOptions() { } func (socket *Socket) Connect() { - var err error; + var err error socket.setConnectionOptions() socket.Conn, _, err = socket.WebsocketDialer.Dial(socket.Url, socket.RequestHeader) @@ -151,14 +152,14 @@ func (socket *Socket) Connect() { } func (socket *Socket) SendText(message string) { - err := socket.send(websocket.TextMessage, [] byte (message)) + err := socket.send(websocket.TextMessage, []byte(message)) if err != nil { logger.Error.Println("write:", err) return } } -func (socket *Socket) SendBinary(data [] byte) { +func (socket *Socket) SendBinary(data []byte) { err := socket.send(websocket.BinaryMessage, data) if err != nil { logger.Error.Println("write:", err) @@ -166,7 +167,14 @@ func (socket *Socket) SendBinary(data [] byte) { } } -func (socket *Socket) send(messageType int, data [] byte) error { +func (socket *Socket) SendJSON(v interface{}) error { + socket.sendMu.Lock() + err := socket.Conn.WriteJSON(v) + socket.sendMu.Unlock() + return err +} + +func (socket *Socket) send(messageType int, data []byte) error { socket.sendMu.Lock() err := socket.Conn.WriteMessage(messageType, data) socket.sendMu.Unlock()