我们有一个“交易复制”软件,顾名思义,该软件用于将一个交易者(发送者)的交易镜像到多个其他交易者(接收者)。它具有三个主要组成部分:
1. 发件人客户端。
2. 服务器。
3.接收客户端。
发送者 -> 服务器 -> 接收者
发送方是使用MQL脚本构建的。MQL 是一种使用 C++ 构建的交易者编程语言。由于有一个发送者,发送者代码将交易信息(或信号)推送到服务器。该服务器是基于 PHP 的,带有一个简单的 MySQL 数据库,管理员可以在其中维护向其转发此信号的用户。接收器也是使用 MQL 构建的。但是目前它是使用一种独特的技术构建的,为了清楚起见,我们不确定它,因为我们是第一次接触代码,而原始程序员却无处可寻(正如预期的那样)。回到这个问题,接收客户端有一段代码似乎在“轮询”服务器以获取任何更新。MQL 使用 C++ 库调用InternetReadFile函数,该函数使用InternetOpenUrlA. 现在,MQL 每 X 毫秒向服务器发送一个请求,以查看是否有新信号,如果找到则拉取它。如果提供 MQL 代码有帮助,我可以做到。
现在回答我的问题。
这是一个好方法吗?如果接收用户增长数百并且每个用户每 X 毫秒“轮询”服务器(或使用 InternetReadFile 执行的任何操作)会发生什么情况。取决于X,它不会在某一时刻杀死服务器CPU吗?我认为这是作为拉取服务实现的,而我认为服务器应该推送此信息,而不是所有接收者客户端不断请求。
如果上述问题的答案是“这是一种不好的方法”,那么最好的方法是什么?通过套接字通信将信号从服务器推送到每个接收器是一个好主意吗?接收器客户端是否会出现“端口转发”和“更改 IP”等问题?还是可以通过编程方式克服它们?
很高兴提供代码,进一步说明。