可调用的多登录服务器/客户端体系结构,无法将消息推送到客户端(仅拉取)



我正在为具有相当老式服务器端代码的应用程序构思客户端/服务器架构,我自己无法修改;它只能将数据发送到客户端作为对直接客户端查询的响应 - 把它想象成老式的AJAX(通过它不是基于浏览器的(。服务器显然无法在没有查询的情况下将信息推送到任何客户端。

问题是我的客户端允许多登录,因此某些数据可能会在其他地方更改,而客户端不知道(直到下一次查询(。我也接受客户端到客户端的协作(服务器仅作为助手和可选的NAT打孔器(

现在对于实际问题:在这种情况下,哪些设计/代码模式是有用的,其中应用程序应该是可调用的和可维护的?我已经用谷歌搜索了命令/查询分离模式,但订阅事件会很愚蠢,因为没有查询就没有事件(这将引起不断检查事件......

还有一件事 - 服务器代码不支持事务,只支持某种检查(读取返回后续写入可能会回发的版本代码。如果 write op 记录的版本与读取版本不同,则表示数据在中间发生了更改并返回错误代码(

你在这里真的没有太多选择。 如果您只控制客户端代码,那么让客户端轮询服务器是唯一的方法。

使用客户端到客户端协作,您可以实现自己的消息传递系统,因此每当客户端更新实体时,它都会向所有连接的客户端发送一条消息,指出"ID 为 123 的实体 XXX 已更改",然后每个客户端自行决定是否需要刷新。 使用真正的消息队列的相同想法会更好,但是如果您需要将服务器用作"NAT打孔器",听起来您有连接限制。

最新更新