1. 发送方客户端。
2. 服务器。
3. 接收方客户端。
发送方 -> 服务器 -> 接收方。
发送器是使用MQL脚本构建的。MQL是一种交易员使用C ++构建的编程语言。由于只有一个发送器,因此发送器代码将交易信息(或信号)推送到服务器。服务器基于PHP,具有简单的MySQL数据库,管理员可以维护转发此信号的用户。
接收器也是使用MQL构建的。但目前它是使用一种独特的技术构建的,为了明确起见,我们对此并不确定,因为我们第一次接触到该代码,原始程序员已经无处可寻(如预期)。所以回到问题上,接收器客户端有一段代码似乎会“轮询”服务器以获取任何更新。MQL使用C ++ lib调用InternetReadFile函数,该函数使用InternetOpenUrlA。现在,MQL每X毫秒向服务器发送请求以查看是否有新信号,并在找到信号时拉取它。如果提供MQL代码有助于解决问题,我可以这样做。
现在是我的问题。
这是一个好方法吗?如果接收用户增加到数百人,并且每个人每 X 毫秒“轮询”服务器(或者使用 InternetReadFile 做其他事情),取决于 X,它不会在某个时间点消耗掉服务器的 CPU 吗?我看到这被实现为一个 pull 服务,但我认为服务器应该推送这些信息,而不是所有接收客户端不断请求。
如果上述问题的答案是“这是一个糟糕的方法”,最好的方法是什么?从服务器通过套接字通信向每个接收方推送信号是一个好主意吗?预计会有像“端口转发”和“更改 IP”这样的问题在接收方客户端出现吗?还是可以通过编程方式克服这些问题?
很乐意提供代码和进一步澄清。