https://github.com/shiwano/websocket-conn
:telephone_receiver: A dead simple WebSocket connection written in Go.
https://github.com/shiwano/websocket-conn
golang websocket
Last synced: about 1 year ago
JSON representation
:telephone_receiver: A dead simple WebSocket connection written in Go.
- Host: GitHub
- URL: https://github.com/shiwano/websocket-conn
- Owner: shiwano
- License: mit
- Created: 2016-08-14T05:41:06.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2021-01-21T02:11:38.000Z (over 5 years ago)
- Last Synced: 2025-04-14T06:55:50.320Z (about 1 year ago)
- Topics: golang, websocket
- Language: Go
- Homepage:
- Size: 47.9 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# websocket-conn [](http://travis-ci.org/shiwano/websocket-conn)
> :telephone_receiver: A dead simple WebSocket connection written in Go.
websocket-conn provides you with easy handling for WebSockets, it's based on [github.com/gorilla/websocket](https://github.com/gorilla/websocket).
## Installation
```bash
$ go get -u github.com/shiwano/websocket-conn/v4
```
## Usage
```go
func Connect(ctx context.Context, settings Settings, url string, requestHeader http.Header) (*Conn *http.Response, error)
func UpgradeFromHTTP(ctx context.Context, settings Settings, w http.ResponseWriter, r *http.Request) (*Conn, error)
type Conn struct {
Stream() <-chan Message
Err() error
SendBinaryMessage(data []byte) error
SendTextMessage(text string) error
SendJSONMessage(v interface{}) error
Close() error
}
```
## Examples
Server:
```go
package main
import (
"context"
"net/http"
wsconn "github.com/shiwano/websocket-conn/v4"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
c, _ := wsconn.UpgradeFromHTTP(r.Context(), wsconn.DefaultSettings(), w, r)
for m := range c.Stream() {
switch t := m.Text(); t {
case "Hello":
if err := c.SendTextMessage(t + " World"); err != nil {
log.Fatal(err)
}
case "Close":
c.Close()
}
}
})
http.ListenAndServe(":5000", nil)
}
```
Client:
```go
package main
import (
"context"
"log"
wsconn "github.com/shiwano/websocket-conn/v4"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
c, _, _ := wsconn.Connect(ctx, wsconn.DefaultSettings(), "ws://localhost:5000", nil)
c.SendTextMessage("Hello")
m := <-c.Stream()
log.Println(m.Text()) // Output: Hello World
c.SendTextMessage("Close")
for range c.Stream() {
// wait for closing.
}
}
```
See also examples directory.
## License
Copyright (c) 2016 Shogo Iwano
Licensed under the MIT license.