|
@@ -36,17 +36,23 @@ func send(conn *websocket.Conn, uid uint) {
|
|
|
}()
|
|
|
for {
|
|
|
data := <-pip
|
|
|
- data.Save()
|
|
|
- msg, err := json.Marshal(data)
|
|
|
+ err := data.Save()
|
|
|
if err != nil {
|
|
|
- fmt.Println("link closed")
|
|
|
+ fmt.Println(err.Error())
|
|
|
break
|
|
|
}
|
|
|
- err = conn.WriteMessage(data.MsgType, msg)
|
|
|
+ msg, err := json.Marshal(data)
|
|
|
if err != nil {
|
|
|
- fmt.Println(err.Error())
|
|
|
+ fmt.Println("link closed")
|
|
|
break
|
|
|
}
|
|
|
+ if data.Time == 1 {
|
|
|
+ err = conn.WriteMessage(data.MsgType, msg)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -62,7 +68,11 @@ func reception(conn *websocket.Conn, uid uint) {
|
|
|
fmt.Println(err.Error())
|
|
|
break
|
|
|
}
|
|
|
- msg.Save()
|
|
|
+ err = msg.Save()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ break
|
|
|
+ }
|
|
|
if v, ok := Conns[msg.To]; ok {
|
|
|
v.pip <- &msg
|
|
|
} else {
|
|
@@ -86,7 +96,7 @@ func broadcast(data model.Message) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func heartBeat(uid uint) {
|
|
|
+func heartBeat(conn *websocket.Conn, uid uint) {
|
|
|
defer func() {
|
|
|
delete(Conns, uid)
|
|
|
}()
|
|
@@ -98,12 +108,17 @@ func heartBeat(uid uint) {
|
|
|
Time: uint(time.Now().Unix()),
|
|
|
Content: "alive",
|
|
|
}
|
|
|
- if v, ok := Conns[msg.To]; ok {
|
|
|
- v.pip <- &msg
|
|
|
- time.Sleep(time.Second)
|
|
|
- } else {
|
|
|
-
|
|
|
+ data, err := json.Marshal(msg)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ break
|
|
|
+ }
|
|
|
+ err = conn.WriteMessage(websocket.TextMessage, data)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ break
|
|
|
}
|
|
|
+ time.Sleep(time.Second * 5)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -125,7 +140,7 @@ func Chat(w http.ResponseWriter, rq *http.Request, uid uint) {
|
|
|
|
|
|
go send(conn, uid)
|
|
|
go reception(conn, uid)
|
|
|
- go heartBeat(uid)
|
|
|
+ go heartBeat(conn, uid)
|
|
|
|
|
|
response.Success(w, "success", nil)
|
|
|
}
|
|
@@ -148,42 +163,62 @@ func LinkToServer(c *gin.Context) {
|
|
|
// @Tags 聊天模块
|
|
|
// @Summary 获取未过期且来源为特定用户的聊天记录
|
|
|
// @Success 200 {object} response.Response
|
|
|
+// @Param page path int true "页数"
|
|
|
+// @Param pageSize path int true "一页的大小"
|
|
|
// @Param uid query string true "用户id"
|
|
|
-// @Router /chat/from [get]
|
|
|
+// @Router /chat/from/{page}/{pageSize} [get]
|
|
|
func GetMsgFromPaged(c *gin.Context) {
|
|
|
id := c.Query("uid")
|
|
|
+ p := c.Param("page")
|
|
|
+ pS := c.Param("pageSize")
|
|
|
+ page, err := strconv.Atoi(p)
|
|
|
+ pageSize, err := strconv.Atoi(pS)
|
|
|
+ if err != nil {
|
|
|
+ response.Fail(c.Writer, err.Error(), 500)
|
|
|
+ return
|
|
|
+ }
|
|
|
uid, err := strconv.ParseUint(id, 10, 64)
|
|
|
if err != nil {
|
|
|
msg := err.Error()
|
|
|
response.Fail(c.Writer, msg, 500)
|
|
|
return
|
|
|
}
|
|
|
- msgs, err := model.Message{}.GetFrom(uint(uid))
|
|
|
+ rsp, err := model.Message{}.GetFrom(uint(uid), page, pageSize)
|
|
|
if err != nil {
|
|
|
response.Fail(c.Writer, err.Error(), 500)
|
|
|
return
|
|
|
}
|
|
|
- response.Success(c.Writer, "success", msgs)
|
|
|
+ response.Success(c.Writer, "success", rsp)
|
|
|
}
|
|
|
|
|
|
// GetMsgToPaged
|
|
|
// @Tags 聊天模块
|
|
|
// @Summary 获取未过期且目标为特定用户的聊天记录
|
|
|
-// @Success 200 {object} response.Response
|
|
|
+// @Param page path int true "页数"
|
|
|
+// @Param pageSize path int true "一页的大小"
|
|
|
// @Param uid query string true "用户id"
|
|
|
-// @Router /chat/to [get]
|
|
|
+// @Success 200 {object} response.Response
|
|
|
+// @Router /chat/to/{page}/{pageSize} [get]
|
|
|
func GetMsgToPaged(c *gin.Context) {
|
|
|
id := c.Query("uid")
|
|
|
+ p := c.Param("page")
|
|
|
+ pS := c.Param("pageSize")
|
|
|
+ page, err := strconv.Atoi(p)
|
|
|
+ pageSize, err := strconv.Atoi(pS)
|
|
|
+ if err != nil {
|
|
|
+ response.Fail(c.Writer, err.Error(), 500)
|
|
|
+ return
|
|
|
+ }
|
|
|
uid, err := strconv.ParseUint(id, 10, 64)
|
|
|
if err != nil {
|
|
|
msg := err.Error()
|
|
|
response.Fail(c.Writer, msg, 500)
|
|
|
return
|
|
|
}
|
|
|
- msgs, err := model.Message{}.GetTo(uint(uid))
|
|
|
+ rsp, err := model.Message{}.GetTo(uint(uid), page, pageSize)
|
|
|
if err != nil {
|
|
|
response.Fail(c.Writer, err.Error(), 500)
|
|
|
return
|
|
|
}
|
|
|
- response.Success(c.Writer, "success", msgs)
|
|
|
+ response.Success(c.Writer, "success", rsp)
|
|
|
}
|