我们有一个要求,其中服务器需要将数据推送到各种客户端。所以我们继续进行SSE(服务器发送事件)。我浏览了文档,但仍然不清楚这个概念。我有以下问题:
场景1 。假设有10个客户端。所以所有10个客户端都会将初始请求发送给服务器。建立了10个连接。当数据进入服务器时,会从服务器向客户端推送消息。
请澄清一下?
答案 0 :(得分:0)
这取决于您如何实施服务器。
如果使用PHP作为Apache模块,那么每个SSE连接都会创建一个在内存中运行的新PHP实例。每个"服务器"一次只服务一个客户。 Q1:是的,但不是你的问题:你只是向stdout回复消息。 Q2 / Q3:如果客户端因任何原因关闭连接,PHP进程会在检测到此情况时关闭。
如果您使用的是多线程服务器,例如在node.js中使用http
Q1:客户端IP是套接字抽象的一部分,您只需向response
对象发送消息。 Q2 / Q3:当每个客户端连接关闭套接字时,处理它的请求进程将结束。一旦所有10个关闭,您的服务器仍将运行,但不会向任何客户端发送数据。
使用SSE实现的一个关键想法是每个客户端都是专用套接字。它不是广播协议,您推出一条消息,所有客户端都获得完全相同的消息。相反,您必须单独将数据发送到每个客户端。但这也意味着您可以自由地向每个客户发送自定义数据。