Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

shiwano/websocket-conn

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

websocket-conn Build Status

📞 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.

Installation

$ go get -u github.com/shiwano/websocket-conn/v4

Usage

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:

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:

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.

About

📞 A dead simple WebSocket connection written in Go.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.