如何使用服务器发送的事件向具体用户 ID 发送消息?

How to send message to concrete user id using server-sent events?

server-sent events是否允许通过用户id向具体用户发送消息?或者它像扇出一样工作?

发送给当前用户是唯一的选择;它不是广播技术,扇出不是一种选择。

每个 SSE 连接都是每个客户端的专用套接字。 (WebSocket 也是。)所以如果你想向多个客户端广播,你需要在服务器端执行额外的步骤(例如共享内存,或每个进程轮询数据库等)

如果你想向特定的用户id发送消息,那么它基本上是一样的。例如。每个用户 ID 都有一个数据库记录(或共享内存槽),并将消息存储在那里。如果该用户 ID 具有 SSE 连接,则服务器端进程将轮询该特定数据库记录。每次更改时,它都会向客户端推送新消息。