diff --git a/neo/message/message.go b/neo/message/message.go index 02341acd..09832edc 100644 --- a/neo/message/message.go +++ b/neo/message/message.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "strings" + "sync" "github.com/fatih/color" "github.com/gin-gonic/gin" @@ -15,6 +16,8 @@ import ( "github.com/yaoapp/yao/openai" ) +var locker = sync.Mutex{} + // Message the message type Message struct { ID string `json:"id,omitempty"` // id for the message @@ -721,6 +724,11 @@ func (m *Message) Callback(fn interface{}) *Message { // Write writes the message to response writer func (m *Message) Write(w gin.ResponseWriter) bool { + + // Sync write to response writer + locker.Lock() + defer locker.Unlock() + defer func() { if r := recover(); r != nil {