Swoole 如何同时向多个客户端推送数据?
问题描述:
有一台服务器需要在本地启动一个 TCP 服务,并向外暴露一个端口。
该服务器会产生一些数据,提供给需要的客户端,客户端如果需要,就去主动连接该服务器。
需求如下:
- 当客户端连接成功后,才会向该客户端推送数据。
- 当客户端断开连接时,停止向该客户端推送数据。
- 允许多个客户端同时连接。
- 因为数据源是不间断的,理论上只要客户端的连接不主动断开,服务端的数据推送就不会主动停止。
服务端伪代码如下:
<?php
// 监听服务端 9503 端口
$server = new Swoole\Server("0.0.0.0", 9503);
/**
* 监听连接进入事件
*/
$server->on("Connect", function ($server, $fd){
while(true){
// todo (获取数据)
// 向客户端推送数据
$server->send($fd, $data);
};
});
/**
* 监听数据接收事件
*/
$server->on("Receive", function ($server, $fd, $from_id, $data){
...
});
/**
* 监听连接关闭事件
*/
$server->on('Close', function ($server, $fd) {
...
});
// 启动 TCP 服务器
$server->start();
请问这个场景怎样处理更合适一些?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)