php sse服务端推送消息到指定客户端
时间: 2023-07-29 08:11:40 浏览: 215
php-sse:一个简单高效的库通过PHP实现HTML5的服务器发送的事件,用于将事件从服务器实时推送到客户端,比Websocket更容易,而不是AJAX请求
在 PHP SSE 技术中,服务器可以向所有连接的客户端推送消息,也可以向指定的客户端推送消息。下面是一种向指定客户端推送消息的方法:
1. 在客户端连接服务端时,将客户端的唯一标识符记录下来,可以存放在一个数组中。
2. 当需要向某个客户端推送消息时,可以根据其唯一标识符找到对应的客户端连接,向其发送消息即可。
下面是示例代码:
```php
// 记录客户端连接
$clients = array();
// 创建 SSE 服务器
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');
while (true) {
// 向所有客户端发送消息
echo "data: Hello, world!\n\n";
ob_flush();
flush();
// 检查客户端是否连接,如果不再连接,则从数组中删除
foreach ($clients as $id => $client) {
if (feof($client)) {
unset($clients[$id]);
}
}
// 等待一段时间,再次发送消息
sleep(1);
}
// 接收客户端连接
if (isset($_GET['id'])) {
$id = $_GET['id'];
$clients[$id] = fopen('php://input', 'r');
}
```
在上面的示例代码中,我们记录了所有连接到服务器的客户端,并在循环中向所有客户端发送消息。当客户端连接时,我们将其唯一标识符存放在 `$clients` 数组中。当需要向某个客户端发送消息时,可以根据其唯一标识符找到对应的客户端连接。
阅读全文