added Response.Committed checks

This commit is contained in:
Gani Georgiev
2023-07-20 10:40:03 +03:00
parent b2284b5f4b
commit 610a948dcc
11 changed files with 157 additions and 60 deletions
+6 -12
View File
@@ -92,7 +92,7 @@ func (api *realtimeApi) connect(c echo.Context) error {
fmt.Fprint(w, "event:"+e.Message.Name+"\n")
fmt.Fprint(w, "data:"+e.Message.Data+"\n\n")
w.Flush()
return nil
return api.app.OnRealtimeAfterMessageSend().Trigger(e)
})
if connectMsgErr != nil {
if api.app.IsDebug() {
@@ -100,9 +100,6 @@ func (api *realtimeApi) connect(c echo.Context) error {
}
return nil
}
if err := api.app.OnRealtimeAfterMessageSend().Trigger(connectMsgEvent); err != nil && api.app.IsDebug() {
log.Println("OnRealtimeAfterMessageSend PB_CONNECT error:", err)
}
// start an idle timer to keep track of inactive/forgotten connections
idleDuration := 5 * time.Minute
@@ -133,7 +130,7 @@ func (api *realtimeApi) connect(c echo.Context) error {
fmt.Fprint(w, "event:"+e.Message.Name+"\n")
fmt.Fprint(w, "data:"+e.Message.Data+"\n\n")
w.Flush()
return nil
return api.app.OnRealtimeAfterMessageSend().Trigger(msgEvent)
})
if msgErr != nil {
if api.app.IsDebug() {
@@ -142,13 +139,6 @@ func (api *realtimeApi) connect(c echo.Context) error {
return nil
}
if err := api.app.OnRealtimeAfterMessageSend().Trigger(msgEvent); err != nil {
if api.app.IsDebug() {
log.Println("Realtime connection closed (OnRealtimeAfterMessageSend error):", client.Id(), err)
}
return nil
}
idleTimer.Stop()
idleTimer.Reset(idleDuration)
case <-c.Request().Context().Done():
@@ -206,6 +196,10 @@ func (api *realtimeApi) setSubscriptions(c echo.Context) error {
e.Client.Subscribe(e.Subscriptions...)
return api.app.OnRealtimeAfterSubscribeRequest().Trigger(event, func(e *core.RealtimeSubscribeEvent) error {
if e.HttpContext.Response().Committed {
return nil
}
return e.HttpContext.NoContent(http.StatusNoContent)
})
})