如何灵活使用tlnet快速构建网站 一 websocket


tlnet将websocket封装为request/respone的使用模式,将读取数据部分,链接异常等与实际也无关的工作封装起来;使用更加直观和简洁

项目案例可以参考 tlnetim

以下是部分示例:

1.注册websocket,tlnet提供4个函数:
  1. HandleWebSocket
  2. HandleWebSocketBindOrigin
  3. HandleWebSocketBindOriginFunc
  4. HandleWebSocketBindConfig

4个函数存储包含关系,实现后面函数则包含前面的函数

HandleWebSocketBindConfig为例

以tlnetim的实现为例:

tlnet.HandleWebSocketBindConfig("/ws", wshandlerFunc, wsWebsocketConfig())

// websocket 接收到数据后的操作
func wshandlerFunc(hc *tlnet.HttpContext) {
	var wa wsack
	if err := json.Unmarshal(hc.WS.Read(), &wa); err == nil { //hc.WS.Read() 读取websocket接收的数据
		parse(wa, hc.WS) //解析并处理信息
	}
}

func wsWebsocketConfig() (wc *tlnet.WebsocketConfig) {
	wc = &tlnet.WebsocketConfig{}
	//websocket断开时,触发OnError。删除wsmap中的连接
	wc.OnError = func(self *tlnet.Websocket) {
		defer MyRecover()
		if r, ok := wsmap.Get(self); ok {
			if u, ok := getIu(r, self); ok {
				//掉线通知
				broadcast(&wsack{ATYPE: LOGOUT, USERNAME: u.Name}, nil, r, true, true)
			}
		}
	}
	//wc.OnOpen 用在连接成功时调用
	return
}

tlnet中websocket的数据主要由3个函数处理:

其中有两个函数在 wsWebsocketConfig中:

wc.OnOpen 为客户端连接成功后调用的函数。

wc.OnError  为连接断开后出错时,调用的函数。

第三个函数在注册函数 HandleWebSocketBindConfig("/ws", wshandlerFunc, wsWebsocketConfig())中 wshandlerFunc 为接收到客户端数据时的处理函数

3个函数根据业务需要赋值实现,或不赋值(赋nil值亦可)



有任何问题或建议请Email:donnie4w@gmail.comhttp://tlnet.top/contact  发信给我,谢谢!