websocket

package module
v0.0.0-...-ab0d406 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 23, 2020 License: Apache-2.0 Imports: 11 Imported by: 0

README

websocket

package websocket. including server and client.

package main

import (
	"github.com/daewood/websocket"
	"net/http"
)

func main() {
	pool := websocket.NewPool(128)
	echo := func(c *websocket.Channel, op websocket.OpCode, data []byte) {
		// echo
		c.Send(op, data)
	}
	wh, _ := websocket.NewHandler(echo)
	wh.SetPool(pool)
	http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
		wh.Upgrade(w, r)
	})

	http.ListenAndServe("127.0.0.1:8080", nil)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Channel

type Channel struct {
	// contains filtered or unexported fields
}

Channel is a websocket connection that messages are read from and written to.

func (*Channel) Close

func (c *Channel) Close()

Close the channel.

func (*Channel) IsClose

func (c *Channel) IsClose() bool

func (*Channel) Send

func (c *Channel) Send(op OpCode, data []byte) error

Send a message over the channel. Once write concurrency of the handler is reached this method will block.

func (*Channel) SetOnClose

func (c *Channel) SetOnClose(callback func())

SetOnClose sets the callback to get called when the channel is closed.

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler is a high performance websocket handler that uses netpoll with read and write concurrency to allow a high number of concurrent websocket connections.

func NewHandler

func NewHandler(callback RecievedCallback) (*Handler, error)

NewHandler creates a new websocket handler.

func (*Handler) Dial

func (h *Handler) Dial(addr string) (*Channel, error)

CreateChannel upgrades the incoming http request into a websocket channel.

func (*Handler) SetPool

func (h *Handler) SetPool(pool *Pool)

func (*Handler) Upgrade

func (h *Handler) Upgrade(w http.ResponseWriter, r *http.Request) (*Channel, error)

type OpCode

type OpCode ws.OpCode

OpCode represents an operation code.

const (
	OpText   OpCode = 0x1
	OpBinary OpCode = 0x2
)

Operation codes that will be used in the RecievedCallback. rfc6455 defines more operation codes but those are hidden by the implementation.

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

Pool of goroutines that have a max concurrency.

func NewPool

func NewPool(concurrency int) *Pool

Create a new pool.

func (*Pool) Schedule

func (p *Pool) Schedule(task func())

Schedule a task on the pool.

type RecievedCallback

type RecievedCallback func(c *Channel, op OpCode, data []byte)

RecievedCallback is the signature for the callback called when a message is recieved on a Channel.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL