wsc

package module
v1.3.1 Latest Latest
Warning

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

Go to latest
Published: Feb 5, 2021 License: MIT Imports: 7 Imported by: 8

README

golang websocket client

go.dev reference GoDoc

Install
$ go get -v github.com/togettoyou/wsc
Simple example
package main

import (
	"github.com/togettoyou/wsc"
	"log"
	"time"
)

func main() {
	done := make(chan bool)
	ws := wsc.New("ws://127.0.0.1:7777/ws")
	// 可自定义配置,不使用默认配置
	//ws.SetConfig(&wsc.Config{
	//	// 写超时
	//	WriteWait: 10 * time.Second,
	//	// 支持接受的消息最大长度,默认512字节
	//	MaxMessageSize: 2048,
	//	// 最小重连时间间隔
	//	MinRecTime: 2 * time.Second,
	//	// 最大重连时间间隔
	//	MaxRecTime: 60 * time.Second,
	//	// 每次重连失败继续重连的时间间隔递增的乘数因子,递增到最大重连时间间隔为止
	//	RecFactor: 1.5,
	//	// 消息发送缓冲池大小,默认256
	//	MessageBufferSize: 1024,
	//})
	// 设置回调处理
	ws.OnConnected(func() {
		log.Println("OnConnected: ", ws.WebSocket.Url)
		// 连接成功后,测试每5秒发送消息
		go func() {
			t := time.NewTicker(5 * time.Second)
			for {
				select {
				case <-t.C:
					err := ws.SendTextMessage("hello")
					if err == wsc.CloseErr {
						return
					}
				}
			}
		}()
	})
	ws.OnConnectError(func(err error) {
		log.Println("OnConnectError: ", err.Error())
	})
	ws.OnDisconnected(func(err error) {
		log.Println("OnDisconnected: ", err.Error())
	})
	ws.OnClose(func(code int, text string) {
		log.Println("OnClose: ", code, text)
		done <- true
	})
	ws.OnTextMessageSent(func(message string) {
		log.Println("OnTextMessageSent: ", message)
	})
	ws.OnBinaryMessageSent(func(data []byte) {
		log.Println("OnBinaryMessageSent: ", string(data))
	})
	ws.OnSentError(func(err error) {
		log.Println("OnSentError: ", err.Error())
	})
	ws.OnPingReceived(func(appData string) {
		log.Println("OnPingReceived: ", appData)
	})
	ws.OnPongReceived(func(appData string) {
		log.Println("OnPongReceived: ", appData)
	})
	ws.OnTextMessageReceived(func(message string) {
		log.Println("OnTextMessageReceived: ", message)
	})
	ws.OnBinaryMessageReceived(func(data []byte) {
		log.Println("OnBinaryMessageReceived: ", string(data))
	})
	// 开始连接
	go ws.Connect()
	for {
		select {
		case <-done:
			return
		}
	}
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	CloseErr  = errors.New("connection closed")
	BufferErr = errors.New("message buffer is full")
)

Functions

This section is empty.

Types

type Config added in v1.1.0

type Config struct {
	// 写超时
	WriteWait time.Duration
	// 支持接受的消息最大长度,默认512字节
	MaxMessageSize int64
	// 最小重连时间间隔
	MinRecTime time.Duration
	// 最大重连时间间隔
	MaxRecTime time.Duration
	// 每次重连失败继续重连的时间间隔递增的乘数因子,递增到最大重连时间间隔为止
	RecFactor float64
	// 消息发送缓冲池大小,默认256
	MessageBufferSize int
}

type WebSocket

type WebSocket struct {
	// 连接url
	Url           string
	Conn          *websocket.Conn
	Dialer        *websocket.Dialer
	RequestHeader http.Header
	HttpResponse  *http.Response
	// contains filtered or unexported fields
}

type Wsc added in v1.1.0

type Wsc struct {
	// 配置信息
	Config *Config
	// 底层WebSocket
	WebSocket *WebSocket
	// contains filtered or unexported fields
}

func New

func New(url string) *Wsc

创建一个Wsc客户端

func (*Wsc) Close added in v1.1.0

func (wsc *Wsc) Close()

主动关闭连接

func (*Wsc) CloseWithMsg added in v1.1.0

func (wsc *Wsc) CloseWithMsg(msg string)

主动关闭连接,附带消息

func (*Wsc) Closed added in v1.1.0

func (wsc *Wsc) Closed() bool

返回关闭状态

func (*Wsc) Connect added in v1.1.0

func (wsc *Wsc) Connect()

发起连接

func (*Wsc) OnBinaryMessageReceived added in v1.1.0

func (wsc *Wsc) OnBinaryMessageReceived(f func(data []byte))

func (*Wsc) OnBinaryMessageSent added in v1.1.0

func (wsc *Wsc) OnBinaryMessageSent(f func(data []byte))

func (*Wsc) OnClose added in v1.1.0

func (wsc *Wsc) OnClose(f func(code int, text string))

func (*Wsc) OnConnectError added in v1.1.0

func (wsc *Wsc) OnConnectError(f func(err error))

func (*Wsc) OnConnected added in v1.1.0

func (wsc *Wsc) OnConnected(f func())

func (*Wsc) OnDisconnected added in v1.1.0

func (wsc *Wsc) OnDisconnected(f func(err error))

func (*Wsc) OnPingReceived added in v1.1.0

func (wsc *Wsc) OnPingReceived(f func(appData string))

func (*Wsc) OnPongReceived added in v1.1.0

func (wsc *Wsc) OnPongReceived(f func(appData string))

func (*Wsc) OnSentError added in v1.1.1

func (wsc *Wsc) OnSentError(f func(err error))

func (*Wsc) OnTextMessageReceived added in v1.1.0

func (wsc *Wsc) OnTextMessageReceived(f func(message string))

func (*Wsc) OnTextMessageSent added in v1.1.0

func (wsc *Wsc) OnTextMessageSent(f func(message string))

func (*Wsc) SendBinaryMessage added in v1.1.0

func (wsc *Wsc) SendBinaryMessage(data []byte) error

发送BinaryMessage消息

func (*Wsc) SendTextMessage added in v1.1.0

func (wsc *Wsc) SendTextMessage(message string) error

发送TextMessage消息

func (*Wsc) SetConfig added in v1.3.0

func (wsc *Wsc) SetConfig(config *Config)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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