Commit c83313ae authored by haoyanbin's avatar haoyanbin

1

parent a2120e79
......@@ -191,6 +191,12 @@ Loop:
c.onError(errors.New("接收数据解析失败!!连接ID:" + c.Id + "原因:" + err.Error()))
break Loop
}
if msg.ProcedureType == 9 {
c.setPing()
}
if msg.ProcedureType == 10 {
c.setPong()
}
SaveMsg(msg)
//rabbitMQ.PublishSimple(string(message))
c.readMessage(msg)
......@@ -312,7 +318,7 @@ Loop:
}
if p == 1 {
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil {
if err := c.conn.WriteMessage(websocket.TextMessage, SerializeJson(&SendMsg{ProcedureType: 9})); err != nil {
fmt.Println(err)
c.onError(errors.New("连接ID:" + c.Id + "关闭写入IO对象出错,连接中断" + err.Error()))
goto Loop1
......@@ -324,7 +330,7 @@ Loop:
}
if p == 1 {
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
if err := c.conn.WriteMessage(websocket.TextMessage, SerializeJson(&SendMsg{ProcedureType: 10})); err != nil {
fmt.Println(err)
c.onError(errors.New("回复客户端PongMessage出现异常:" + err.Error()))
goto Loop1
......@@ -336,6 +342,24 @@ Loop1:
c.close()
}
func (c *Client) setPong() {
c.conn.SetReadDeadline(time.Now().Add(pongWait))
fmt.Println("收到pong---", c.Id)
c.pingPeriodTicker.Reset(pingPeriod)
c.onPong()
}
func (c *Client) setPing() {
c.conn.SetReadDeadline(time.Now().Add(pongWait))
c.pingPeriodTicker.Reset(pingPeriod)
fmt.Println("收到ping---", c.Id)
c.recvPing <- 1
//if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
// c.onError(errors.New("回复客户端PongMessage出现异常:"+err.Error()))
//}
c.onPing()
}
func (c *Client) send(msg *SendMsg) {
timeout := time.NewTimer(time.Millisecond * 800)
defer timeout.Stop()
......
......@@ -85,25 +85,25 @@ func (c *Client) OpenClient(w http.ResponseWriter, r *http.Request, head http.He
c.conn.SetReadDeadline(time.Now().Add(pongWait))
c.pingPeriodTicker = time.NewTimer(pingPeriod)
c.closeTicker = time.NewTimer(closeWait)
c.conn.SetPongHandler(func(str string) error {
c.conn.SetReadDeadline(time.Now().Add(pongWait))
fmt.Println("收到pong---", c.Id, str)
c.pingPeriodTicker.Reset(pingPeriod)
c.onPong()
return nil
})
c.conn.SetPingHandler(func(str string) error {
c.conn.SetReadDeadline(time.Now().Add(pongWait))
c.pingPeriodTicker.Reset(pingPeriod)
fmt.Println("收到ping---", c.Id, str)
c.recvPing <- 1
//if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
// c.onError(errors.New("回复客户端PongMessage出现异常:"+err.Error()))
//}
c.onPing()
return nil
})
//c.conn.SetPongHandler(func(str string) error {
// c.conn.SetReadDeadline(time.Now().Add(pongWait))
// fmt.Println("收到pong---", c.Id, str)
// c.pingPeriodTicker.Reset(pingPeriod)
// c.onPong()
// return nil
//})
//
//c.conn.SetPingHandler(func(str string) error {
// c.conn.SetReadDeadline(time.Now().Add(pongWait))
// c.pingPeriodTicker.Reset(pingPeriod)
// fmt.Println("收到ping---", c.Id, str)
// c.recvPing <- 1
// //if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
// // c.onError(errors.New("回复客户端PongMessage出现异常:"+err.Error()))
// //}
// c.onPing()
// return nil
//})
c.conn.SetCloseHandler(func(code int, str string) error {
//收到客户端连接关闭时的回调
......@@ -354,6 +354,10 @@ func GetClientInfoByToken(token string) (*UserInfo, error) {
// 会话状态 1 开始导诊 2 等待连接 3 双方建立连接 4 结束会话 5 离线 6 对话 7 已读 8 超时自动结束
func SaveMsg(msg *SendMsg) {
if msg.ProcedureType == 9 || msg.ProcedureType == 10 {
return
}
msg.SendTime = time.Now().Format("2006-01-02 15:04:05")
user := GetClientInfoById(msg.FromClientId)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment