iohao / ioGame

无锁异步化、事件驱动架构设计的 java netty 网络编程框架; 轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式; 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 通过 ioGame 你可以很容易的搭建出一个集群无中心节点、集群自动化、分布式的网络服务器;FXGL、Unity、UE、Cocos Creator、Godot、Netty、Protobuf、webSocket、tcp、socket;java Netty 游戏服务器框架; Java Netty Game Server.
http://game.iohao.com
GNU Affero General Public License v3.0
920 stars 205 forks source link

关于通信方式的单次请求处理 #390

Closed DT-cb closed 6 days ago

DT-cb commented 3 weeks ago

你的问题 | 使用场景

描述你遇到的问题,或使用场景(询问框架能否满足此类需求)

老师,您好,我在使用框架时遇到了一个问题,希望能得到一些指导。 在类似对话的场景中,我希望客户端能够发送单次请求,而服务器能够逐步返回响应给客户端,而不是一次性返回所有数据。请问框架是否支持这样的功能?如果目前不支持,是否有可能进行扩展以实现请求-流式响应的功能呢, 是否有相关的实现示例或者建议呢,谢谢老师!

预期值

期望的预期值

实际值

实际值

复现步骤

描述复现步骤,并提供复现 demo

版本

iohao commented 3 weeks ago

框架目前没有此类通讯方式,可以考虑使用 request/void 通讯方式,在方法内通过广播的方式逐步返回响应给客户端。

伪代码

@ActionMethod(1)
public void stream(FlowContext flowContext) {
    for (yourBizData : YourResponseStream) {
        flowContext.broadcastMe(cmd, yourBizData);
    }
}
DT-cb commented 3 weeks ago

好的,谢谢老师,还有一个问题,“关于广播方式,是否支持同时对多个用户进行逐步响应呢,如果支持,如何确保对每个用户的响应数据不混乱,从而实现响应的隔离呢”

iohao commented 3 weeks ago

使用 flowContext.broadcast 方法