🧑‍💻 Add Kernel API for subscribe broadcast message by SSE (#13694)

* 🎨 Add Kernel API for subscribe broadcast

* 🐛 Fix request serialization

* 🐛 Fix broadcast message loss issue

* 🎨 Add event ID

* 🎨 Add retry field

* 🐛 Fix event ID format
This commit is contained in:
Yingyi / 颖逸 2025-01-01 21:51:45 +08:00 committed by GitHub
parent 20694a374c
commit 69c9539cdc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 548 additions and 110 deletions

View file

@ -426,19 +426,34 @@ func ControlConcurrency(c *gin.Context) {
reqPath := c.Request.URL.Path
// Improve the concurrency of the kernel data reading interfaces https://github.com/siyuan-note/siyuan/issues/10149
if strings.HasPrefix(reqPath, "/stage/") || strings.HasPrefix(reqPath, "/assets/") || strings.HasPrefix(reqPath, "/appearance/") {
if strings.HasPrefix(reqPath, "/stage/") ||
strings.HasPrefix(reqPath, "/assets/") ||
strings.HasPrefix(reqPath, "/emojis/") ||
strings.HasPrefix(reqPath, "/plugins/") ||
strings.HasPrefix(reqPath, "/public/") ||
strings.HasPrefix(reqPath, "/snippets/") ||
strings.HasPrefix(reqPath, "/templates/") ||
strings.HasPrefix(reqPath, "/widgets/") ||
strings.HasPrefix(reqPath, "/appearance/") ||
strings.HasPrefix(reqPath, "/export/") ||
strings.HasPrefix(reqPath, "/history/") ||
strings.HasPrefix(reqPath, "/api/query/") ||
strings.HasPrefix(reqPath, "/api/search/") ||
strings.HasPrefix(reqPath, "/api/network/") ||
strings.HasPrefix(reqPath, "/api/broadcast/") ||
strings.HasPrefix(reqPath, "/es/") {
c.Next()
return
}
parts := strings.Split(reqPath, "/")
function := parts[len(parts)-1]
if strings.HasPrefix(function, "get") || strings.HasPrefix(function, "list") ||
strings.HasPrefix(function, "search") || strings.HasPrefix(function, "render") || strings.HasPrefix(function, "ls") {
c.Next()
return
}
if strings.HasPrefix(function, "/api/query/") || strings.HasPrefix(function, "/api/search/") {
if strings.HasPrefix(function, "get") ||
strings.HasPrefix(function, "list") ||
strings.HasPrefix(function, "search") ||
strings.HasPrefix(function, "render") ||
strings.HasPrefix(function, "ls") {
c.Next()
return
}