Web: add some technical details to the socketIO documentation

Add technical details to explain which part of the SocketIO-based broadcast
system is implemented where in the source code.
This commit is contained in:
Sybren A. Stüvel 2023-07-13 10:08:34 +02:00
parent 520102627d
commit b83b929e01

View File

@ -16,7 +16,31 @@ SocketIO messages have an *event name* and *room name*.
- **Manager** typically sends to all clients in a specific *room*. Which client - **Manager** typically sends to all clients in a specific *room*. Which client
has joined which room is determined by the Manager as well. By default every has joined which room is determined by the Manager as well. By default every
client joins the "job updates" and "chat" rooms. This is done in the client joins the "job updates" and "chat" rooms. This is done in the
`OnConnection` handler defined in `registerSIOEventHandlers()`. `OnConnection` handler defined in `registerSIOEventHandlers()`. Clients can
send messages to the Manager to change which rooms they are in.
- Received messages (regardless of by whom) are handled based only on their - Received messages (regardless of by whom) are handled based only on their
*event name*. The *room name* only determines *which* client receives those *event name*. The *room name* only determines *which client* receives those
messages. messages.
## Technical Details
The following files & directories are relevant to the SocketIO broadcasting
system on the Manager/backend side:
`internal/manager/webupdates`
: package for the SocketIO broadcasting system
`internal/manager/webupdates/sio_rooms.go`
: contains the list of predefined SocketIO *rooms* and *event types*. Note that
there are more rooms than listed in that file; there are dynamic room name
like `job-fa48930a-105c-4125-a7f7-0aa1651dcd57` that cannot be listed there as
constants.
`internal/manager/webupdates/job_updates.go`
: sending job-related updates.
`internal/manager/webupdates/worker_updates.go`
: sending worker-related updates.
For a relatively simple example of a job update broadcast, see
`func (f *Flamenco) SetJobPriority(...)` in `internal/manager/api_impl/jobs.go`.