ws

package
v1.0.14 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2022 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CONN_TYPE_CLIENT = 0
	CONN_TYPE_SERVER = 1
)
View Source
const (
	CHARSET_UTF8 = 0
	CHARSET_GBK  = 1
)

Variables

View Source
var (
	ReadWait   = conf.ExtDuration("ws.readWait", 60*time.Second)  //读等待
	WriteWait  = conf.ExtDuration("ws.writeWait", 60*time.Second) //写等待
	PingPeriod = WriteWait * 4 / 10                               //ping间隔应该小于写等待时间

	NetTemporaryWait = 500 * time.Millisecond //网络抖动重试等待
)

配置项

View Source
var (
	P_S2C_name = map[int32]string{
		0: "s2c_connected",
		1: "s2c_err_displace",
	}
	P_S2C_value = map[string]int32{
		"s2c_connected":    0,
		"s2c_err_displace": 1,
	}
)

Enum value maps for P_S2C.

View Source
var Clients = newHub()
View Source
var File_ws_msg_proto protoreflect.FileDescriptor
View Source
var (
	Handlers = make(map[int32]Handler)
)
View Source
var Servers = newHub()

Functions

func PutPMessage

func PutPMessage(msg *P_MESSAGE)

func PutPMessageIntfs

func PutPMessageIntfs(message interface{})

func RegisterHandler

func RegisterHandler(cmd int32, h Handler)

注册消息处理器

Types

type ConnOption

type ConnOption func(*Connection)

连接动态参数选项

func ConnectCbOption

func ConnectCbOption(connCallback IConnCallback) ConnOption

通用option

func HeartbeatCbOption

func HeartbeatCbOption(heartbeatCallback IHeartbeatCallback) ConnOption

func SendBufferOption

func SendBufferOption(bufferSize int) ConnOption

func SrvPullChannelsOption

func SrvPullChannelsOption(channels []int) ConnOption

为每种消息拉取逻辑分别注册不同的通道

func SrvUpgraderOption

func SrvUpgraderOption(upgrader *websocket.Upgrader) ConnOption

服务端特有 upgrader定制

type ConnType

type ConnType int8

func (ConnType) String

func (t ConnType) String() string

type Connection

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

websocket连接封装

func Accept

func AcceptGin

func AcceptGin(ctx *gin.Context, meta ConnectionMeta, opts ...ConnOption) (*Connection, error)

func Connect

func Connect(ctx context.Context, sId, sUrl string, secureWss bool, header http.Header, opts ...ConnOption) (*Connection, error)

func (*Connection) Charset

func (c *Connection) Charset() int

func (*Connection) GetCommDataValue

func (c *Connection) GetCommDataValue(key string) (interface{}, bool)

连接数据存储结构

func (*Connection) GetPullChannel

func (c *Connection) GetPullChannel(notifyType int) (chan struct{}, bool)

func (*Connection) Id

func (c *Connection) Id() string

func (*Connection) IncrCommDataValueBy

func (c *Connection) IncrCommDataValueBy(key string, delta int)

func (*Connection) IsDisplaced

func (c *Connection) IsDisplaced() bool

func (*Connection) IsStopped

func (c *Connection) IsStopped() bool

func (*Connection) KickClient

func (c *Connection) KickClient(displace bool)

displace=true,通常在集群环境下,踢掉在其他集群节点建立的连接,当前节点不需要主动调用

func (*Connection) KickServer

func (c *Connection) KickServer(displace bool)

displace=true,通常在集群环境下,踢掉在其他集群节点建立的连接,当前节点不需要主动调用

func (*Connection) RefreshDeadline

func (c *Connection) RefreshDeadline()

func (*Connection) RemoveCommDataValue

func (c *Connection) RemoveCommDataValue(key string)

func (*Connection) SendMsg

func (c *Connection) SendMsg(ctx context.Context, payload *P_MESSAGE, sc SendCallback) (err error)

func (*Connection) SendPullNotify

func (c *Connection) SendPullNotify(ctx context.Context, pullChannel int) (err error)

通知指定消息通道转发消息

func (*Connection) SetCommDataValue

func (c *Connection) SetCommDataValue(key string, value interface{})

func (*Connection) Type

func (c *Connection) Type() int

func (*Connection) UserId

func (c *Connection) UserId() string

func (*Connection) Version

func (c *Connection) Version() int

type ConnectionMeta

type ConnectionMeta struct {
	UserId   string //userId
	Typed    int    //客户端类型枚举
	DeviceId string //设备ID
	Version  int    //版本
	Charset  int    //客户端使用的字符集
}

func (*ConnectionMeta) BuildConnId

func (m *ConnectionMeta) BuildConnId() string

type Handler

type Handler func(context.Context, *Connection, *P_MESSAGE) error

客户端消息处理函数对象

type Hub

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

连接管理器

func (*Hub) ConnectionIds

func (h *Hub) ConnectionIds() []string

func (*Hub) Find

func (h *Hub) Find(id string) (*Connection, error)

func (*Hub) RangeConnsByFunc

func (h *Hub) RangeConnsByFunc(f func(string, *Connection) bool)

type IConnCallback

type IConnCallback interface {
	ConnFinished(clientId string)
	DisconnFinished(clientId string)
}

连接回调

type IHeartbeatCallback

type IHeartbeatCallback interface {
	RecvPing(clientId string)
	RecvPong(clientId string) error
}

保活回调

type P_MESSAGE

type P_MESSAGE struct {
	ProtocolId int32  `protobuf:"varint,1,opt,name=protocol_id,json=protocolId,proto3" json:"protocol_id,omitempty"` //消息协议ID
	Data       []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`                                //内容-自定义消息
	// contains filtered or unexported fields
}

func GetPMessage

func GetPMessage() *P_MESSAGE

func (*P_MESSAGE) Descriptor deprecated

func (*P_MESSAGE) Descriptor() ([]byte, []int)

Deprecated: Use P_MESSAGE.ProtoReflect.Descriptor instead.

func (*P_MESSAGE) GetData

func (x *P_MESSAGE) GetData() []byte

func (*P_MESSAGE) GetProtocolId

func (x *P_MESSAGE) GetProtocolId() int32

func (*P_MESSAGE) ProtoMessage

func (*P_MESSAGE) ProtoMessage()

func (*P_MESSAGE) ProtoReflect

func (x *P_MESSAGE) ProtoReflect() protoreflect.Message

func (*P_MESSAGE) Reset

func (x *P_MESSAGE) Reset()

func (*P_MESSAGE) String

func (x *P_MESSAGE) String() string

type P_S2C

type P_S2C int32
const (
	P_S2C_s2c_connected    P_S2C = 0 //连接成功建立
	P_S2C_s2c_err_displace P_S2C = 1 //被顶号
)

func (P_S2C) Descriptor

func (P_S2C) Descriptor() protoreflect.EnumDescriptor

func (P_S2C) Enum

func (x P_S2C) Enum() *P_S2C

func (P_S2C) EnumDescriptor deprecated

func (P_S2C) EnumDescriptor() ([]byte, []int)

Deprecated: Use P_S2C.Descriptor instead.

func (P_S2C) Number

func (x P_S2C) Number() protoreflect.EnumNumber

func (P_S2C) String

func (x P_S2C) String() string

func (P_S2C) Type

func (P_S2C) Type() protoreflect.EnumType

type SendCallback

type SendCallback func(ctx context.Context, c *Connection, err error)

消息发送回调接口

Jump to

Keyboard shortcuts

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