blue

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2019 License: MIT Imports: 8 Imported by: 0

README

blue

基于gorilla/websocket构建的微型websocket框架

ps: 为什么叫这个名字呢,因为最近在听the blue hearts这个乐队

依赖要求

没有

安装

使用go命令获取类库

go get github.com/flxxyz/blue

例子

net/http
package main

import (
    "bytes"
    "github.com/flxxyz/blue"
    "log"
    "net/http"
)

func main() {
    heart := blue.NewHeart()
    heart.HandlerMessage(func(c *blue.Client, data *bytes.Buffer) {
        heart.Broadcast(data)
        log.Printf("[%s] body: %s", c.ID.String(), data.String())
    })
    
    http.HandleFunc("/", heart.ServeHTTP)
    if err := http.ListenAndServe(":7777", nil); err == nil {
        log.Fatal("GG")
    }
}

###gin

package main

import (
    "bytes"
    "github.com/flxxyz/blue"
    "github.com/gin-gonic/gin"
    "log"
)

func main() {
    heart := blue.NewHeart()
    heart.HandlerMessage(func(c *blue.Client, data *bytes.Buffer) {
        heart.Broadcast(data)
        log.Printf("[%s] body: %s", c.ID.String(), data.String())
    })
    
    gin.SetMode(gin.ReleaseMode)
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        heart.ServeHTTP(c.Writer, c.Request)
    })
    r.Run(":7777")
}

文档

文档点这里

版权

blue包在MIT License下发布。有关详细信息,请参阅LICENSE。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	ID *bytes.Buffer //当前连接的唯一id

	Request *http.Request //保存当前请求的一些信息,貌似也没什么用
	// contains filtered or unexported fields
}

func (*Client) Close

func (c *Client) Close() error

func (*Client) Write

func (c *Client) Write(data *bytes.Buffer) error

func (*Client) WriteBinary

func (c *Client) WriteBinary(data *bytes.Buffer) error

type ClientManage

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

func NewClientManage

func NewClientManage() *ClientManage

实例客户端管理器

func (*ClientManage) Len

func (cm *ClientManage) Len() int

读取当前人员数(读锁保障)

type Conf

type Conf struct {
	ReadDeadline  time.Duration
	WriteDeadline time.Duration
	Message       message
}

func NewConf

func NewConf() *Conf

type Heart

type Heart struct {
	*ClientManage
	// contains filtered or unexported fields
}

心脏

func NewHeart

func NewHeart() *Heart

实例心脏

func (*Heart) Broadcast

func (h *Heart) Broadcast(data *bytes.Buffer)

广播消息

func (*Heart) BroadcastBinary

func (h *Heart) BroadcastBinary(data *bytes.Buffer)

广播二进制消息

func (*Heart) BroadcastBinaryFilter

func (h *Heart) BroadcastBinaryFilter(data *bytes.Buffer, fn func(*Client) bool)

广播过滤的二进制消息

func (*Heart) BroadcastFilter

func (h *Heart) BroadcastFilter(data *bytes.Buffer, fn func(*Client) bool)

广播过滤的消息

func (*Heart) HandlerClose

func (h *Heart) HandlerClose(fn func(c *Client, code int, text string) error)

开放的处理退出函数

func (*Heart) HandlerConnect

func (h *Heart) HandlerConnect(fn func(c *Client))

开放的处理链接函数

func (*Heart) HandlerDisconnect

func (h *Heart) HandlerDisconnect(fn func(c *Client))

开放的处理断开链接函数

func (*Heart) HandlerError

func (h *Heart) HandlerError(fn func(c *Client, err error))

开放的处理错误函数

func (*Heart) HandlerMessage

func (h *Heart) HandlerMessage(fn func(c *Client, data *bytes.Buffer))

开放的处理消息函数

func (*Heart) HandlerMessageBinary

func (h *Heart) HandlerMessageBinary(fn func(c *Client, data *bytes.Buffer))

开放的处理二进制消息函数

func (*Heart) HandlerPong

func (h *Heart) HandlerPong(fn func(c *Client))

开放的处理pong函数

func (*Heart) HandlerSendMessage

func (h *Heart) HandlerSendMessage(fn func(c *Client, data *bytes.Buffer))

开放的处理发送消息函数

func (*Heart) HandlerSendMessageBinary

func (h *Heart) HandlerSendMessageBinary(fn func(c *Client, data *bytes.Buffer))

开放的处理发送二进制消息函数

func (*Heart) ServeHTTP

func (h *Heart) ServeHTTP(w http.ResponseWriter, r *http.Request)

处理请求升级

type Msg

type Msg struct {
	T      int
	Body   *bytes.Buffer
	Filter filterFunc
}

消息结构体

func NewMsg

func NewMsg(messageType int, buffer *bytes.Buffer, fn filterFunc) *Msg

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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