func sendHeartHandler(r *http.Request, w http.ResponseWriter, redis *models.RedisLogger, user *models.Account, p Parameter) { form := p.(sendHeartForm) receivers := redis.HeartReceivers(user.Id) if len(receivers) == 0 { writeResponse(r.RequestURI, w, nil, nil) } var target string for _, recv := range receivers { if recv != user.Id { target = recv break } } // ws push event := &models.Event{ Type: models.EventSystem, Time: time.Now().Unix(), Data: models.EventData{ Type: models.EventSendHeart, Id: user.Id, From: user.Id, To: target, Body: []models.MsgBody{ {Type: "record_id", Content: form.Record}, {Type: "userid", Content: user.Id}, }, }, } if len(target) > 0 { event.Save() redis.PubMsg(models.EventSystem, target, event.Bytes()) redis.LogHeartSend(user.Id) redis.SetHeartRecv(target, true) } writeResponse(r.RequestURI, w, nil, nil) }