Documentation ¶
Index ¶
Constants ¶
View Source
const ( WebsocketHandshakeSuccess = `{"code":2000,"msg":"ws连接成功","data":""}` WebsocketServerPingMsg = "Server->Ping->Client" )
View Source
const ( ErrorsWebsocketOnOpenFail string = "websocket onopen 发生阶段错误" ErrorsWebsocketUpgradeFail string = "websocket Upgrade 协议升级, 发生错误" ErrorsWebsocketReadMessageFail string = "websocket ReadPump(实时读取消息)协程出错" ErrorsWebsocketBeatHeartFail string = "websocket BeatHeart心跳协程出错" ErrorsWebsocketBeatHeartsMoreThanMaxTimes string = "websocket BeatHeart 失败次数超过最大值" ErrorsWebsocketSetWriteDeadlineFail string = "websocket 设置消息写入截止时间出错" ErrorsWebsocketWriteMgsFail string = "websocket Write Msg(send msg) 失败" ErrorsWebsocketStateInvalid string = "websocket state 状态已经不可用(掉线、卡死等愿意,造成双方无法进行数据交互)" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Client ¶
type Client struct { Hub *Hub // 负责处理客户端注册、注销、在线管理 Conn *websocket.Conn // 一个ws连接 Send chan []byte // 一个ws连接存储自己的消息管道 PingPeriod time.Duration ReadDeadline time.Duration WriteDeadline time.Duration HeartbeatFailTimes int State uint8 // ws状态,1=ok;0=出错、掉线等 sync.RWMutex ClientMoreParams // 这里追加一个结构体,方便开发者在成功上线后,可以自定义追加更多字段信息 }
func (*Client) Heartbeat ¶
func (c *Client) Heartbeat()
按照websocket标准协议实现隐式心跳,Server端向Client远端发送ping格式数据包,浏览器收到ping标准格式,自动将消息原路返回给服务器
type ClientMoreParams ¶
type ClientMoreParams struct { UserParams1 string `json:"user_params_1"` // 字段名称以及类型由 开发者自己定义 UserParams2 string `json:"user_params_2"` }
ClientMoreParams 为客户端成功上线后设置更多的参数 ws 客户端成功上线以后,可以通过客户端携带的唯一参数,在数据库查询更多的其他关键信息,设置在 *Client 结构体上 这样便于在后续获取在线客户端时快速获取其他关键信息,例如:进行消息广播时记录日志可能需要更多字段信息等
type Hub ¶
type Hub struct { //上线注册 Register chan *Client //下线注销 UnRegister chan *Client //所有在线客户端的内存地址 Clients map[*Client]bool }
func CreateHubFactory ¶
func CreateHubFactory() *Hub
type Websocket ¶
type Websocket struct {
Client *Client
}
func (*Websocket) BroadcastMsg ¶
向全部在线客户端广播消息 广播函数可能被不同的逻辑同时调用,由于操作的都是 Conn ,因此为了保证并发安全,加互斥锁
Click to show internal directories.
Click to hide internal directories.