add fetching message history
This commit is contained in:
+23
-9
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"log"
|
||||
"net/http"
|
||||
@@ -54,6 +55,26 @@ func ServeWsConnection(responseWriter http.ResponseWriter, request *http.Request
|
||||
}
|
||||
}
|
||||
|
||||
func sendMessageStructCloseIfTimeout(user *User, message *Message) {
|
||||
if user.WsConn == nil {
|
||||
return
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
defer cancel()
|
||||
|
||||
jsonMsg, err := json.Marshal(message)
|
||||
if err != nil {
|
||||
log.Printf("json marshal error: %v", err)
|
||||
return
|
||||
}
|
||||
err = wsjson.Write(ctx, user.WsConn, jsonMsg)
|
||||
if err != nil {
|
||||
log.Printf("json write error: %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func sendMessageCloseIfTimeout(user *User, message *map[string]any) {
|
||||
if user.WsConn == nil {
|
||||
return
|
||||
@@ -84,15 +105,8 @@ func sendToAllMessageCloseIfTimeout(message *map[string]any) {
|
||||
}
|
||||
}
|
||||
|
||||
func WsSendToUser(to *User, message *Message) {
|
||||
var msg = map[string]any{
|
||||
"type": WsMessageFrom.DirectMessage,
|
||||
"id": message.Id,
|
||||
"from": message.Sender,
|
||||
"created": message.CreatedAt,
|
||||
"content": message.Content,
|
||||
}
|
||||
sendMessageCloseIfTimeout(to, &msg)
|
||||
func WsMessageSendToUser(to *User, message *Message) {
|
||||
sendMessageStructCloseIfTimeout(to, message)
|
||||
}
|
||||
|
||||
func WsSendToGroup(group *Group, sender *User, message string) error {
|
||||
|
||||
Reference in New Issue
Block a user