Commit c83313ae authored by haoyanbin's avatar haoyanbin

1

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