49 Commits

Author SHA1 Message Date
Deluan
b92039b07e
Fix race condition 2026-01-02 20:25:33 +00:00
Deluan
04a42106a5
Fix writeEvent function.
It would not send anything if the `ResponseWriter` was not a `http.Flusher`, and it was leaking channels with `time.After`
2026-01-02 20:25:33 +00:00
Deluan
ad12edc79c
Update golangci-lint and fix lint errors 2026-01-02 20:22:21 +00:00
Deluan
e0bfb22007
Rename log.LevelCritical to log.LevelFatal 2026-01-02 20:20:16 +00:00
Deluan
5fef41681b
Some cleanup, fixes typos and grammar errors 2026-01-02 20:19:52 +00:00
Deluan
9f279bf32a
Fix potential nil pointer dereference 2026-01-02 20:16:00 +00:00
Deluan
03128f2b97
Fix error comparisons 2026-01-02 20:15:58 +00:00
Deluan
e6ba5a2229
Only compute version once 2026-01-02 20:14:54 +00:00
Deluan
4bfceb3710
Simplify Singleton usage by leveraging Go 1.18's generics 2026-01-02 20:14:22 +00:00
Deluan
90bc1981d8
Upgrade Ginkgo to V2 2026-01-02 20:14:21 +00:00
Deluan
755fac76b0
Don't rely on goroutines to send keepalive events 2026-01-02 20:05:07 +00:00
Deluan
8c6a931037
Assign event ids in the main loop, to avoid out-of-order events 2026-01-02 20:05:07 +00:00
Deluan
39623748f2
Fix deadlock situation when events are sent too fast to the broker 2026-01-02 20:05:07 +00:00
Deluan
883d316670
Use singleton in other places as well 2026-01-02 20:05:04 +00:00
Deluan
81b17bf941
Show notification if server is updated 2026-01-02 20:05:03 +00:00
Deluan
1542362898
Optimize refresh events for scrobble endpoint 2026-01-02 20:03:21 +00:00
Deluan
8e32b56ea0
Only send events to clients who need it
- User events (star, rating, plays) only sent to same user
- Don't send to the client (browser window) that originated the event
2026-01-02 20:02:35 +00:00
Deluan
81b87e9ff6
Only refetch changed resources when receive a "refreshResource" event 2026-01-02 20:02:34 +00:00
Deluan
2e645a3191
Trigger a UI refresh when the scanner finds changes.
Closes #1025
2026-01-02 19:32:17 +00:00
Deluan
8241aa0e13
Add Nginx header to not buffer SSE connection
This should allow the Activity Panel, that uses a Server-Side Events/ Event Source connection, to work with default Nginx reverse proxy configuration.
2026-01-02 19:26:38 +00:00
harshavardhanpb
f87e7bcdf1
Rename diodo_test.go to diode_test.go (#956)
Simple typo fix
2026-01-02 19:23:05 +00:00
Deluan
99dbe34d0f
Use a Waiter diode, to avoid constant CPU usage. Fixes #777 2026-01-02 19:21:29 +00:00
Deluan
10cf2372f8
Move project to Navidrome GitHub organization 2026-01-02 19:20:16 +00:00
Deluan
685fa0427d
Add tests to diode 2026-01-02 19:20:16 +00:00
Deluan
de79918128
Add test to Event 2026-01-02 19:20:16 +00:00
Deluan
7106add40c
Removed event.type from SSE, as it was causing the browser to hang.
Needs more investigation, but for now, back to the simple message format
2026-01-02 19:20:16 +00:00
Deluan
c1341251c3
Use diodes instead of channels in SSE broker 2026-01-02 19:20:15 +00:00
Deluan
749edc4661
Use new simplified uuid.NewString() syntax 2026-01-02 19:20:14 +00:00
Deluan
32f8cd7e11
Make ServerStart variable global 2026-01-02 19:20:12 +00:00
Deluan
e8ba03d9da
Removed unused variable 2026-01-02 19:20:12 +00:00
Deluan
905abe10f6
Only close connection if the write times out 2026-01-02 19:20:12 +00:00
Deluan
60605f8d1b
Make done channel buffered 2026-01-02 19:20:11 +00:00
Deluan
7aa8b6418e
Don't ever stop the listen go routine 2026-01-02 19:20:11 +00:00
Deluan
35240465b9
Forgot to allocate done channel 2026-01-02 19:20:11 +00:00
Deluan
bed1410e0d
Disconnect the client if the output buffer fills up 2026-01-02 19:20:11 +00:00
Deluan
31616d6f0e
Make names more consistent 2026-01-02 19:20:10 +00:00
Deluan
78b44e54cd
Use non-blocking event sending 2026-01-02 19:20:10 +00:00
Deluan
f0bb1088f8
Fix file descriptor leak in SSE implementation.master
See https://github.com/deluan/navidrome/issues/446#issuecomment-736296465
2026-01-02 19:20:09 +00:00
Deluan
f0dffd8347
Change format of events sent by server, leveraging event type and id 2026-01-02 19:20:08 +00:00
Deluan
cb860ecdb0
Make eventStream connection/reconnection more reliable
Also more logs on the server
2026-01-02 19:20:06 +00:00
Deluan
70dc847836
Show folders scanned instead of files scanned 2026-01-02 19:20:05 +00:00
Deluan
c84aa9026b
Remove stray Printf 2026-01-02 19:19:36 +00:00
Deluan
5f6138643d
Add more broker log 2026-01-02 19:19:36 +00:00
Deluan
1791dd5667
Add Uptime to Activity Panel 2026-01-02 19:19:36 +00:00
Deluan
a25c2534db
Fix log message 2026-01-02 19:19:34 +00:00
Deluan
564198600a
Add buffer to broker SendMessage 2026-01-02 19:19:34 +00:00
Deluan
d8c07e2b01
Better broker logging 2026-01-02 19:19:34 +00:00
Deluan
adeb2f95dc
Auto-reconnect to event stream after 20secs timeout 2026-01-02 19:19:33 +00:00
Deluan
652a6cf18f
Adding a communication channel between server and clients using SSE 2026-01-02 19:19:33 +00:00