连接消息接收和消息发送脚本


Connect message-receiving and message-sending scripts

我开发了一个类似聊天的应用程序,我的服务器应该是用PHP编写的,客户端应该是被动的,只是监听数据。

现在我想从两个脚本开始:发送.php和服务器.php

send.php 提供 REST API 以通过 GET 接口将消息发送到另一个客户端。

server.php 应该是一个接受来自客户端连接的 TCP 服务器,以便通过套接字发送数据,并且目前基于 http://php.net/manual/en/sockets.examples.php,所以现在客户端只连接到他,他发回一些测试字符串。

我的问题是我应该以某种方式连接发送.php和服务器.php以便当通过发送推送消息时.php服务器.php实际上会发送它。

我该怎么做?

我想一种选择是将推送的消息存储在服务器存储中,并在服务器.php中检查新消息,但我担心这太耗费资源了。

解决方案 1。

以我最初建议的方式解决了我的问题,这意味着我使服务器.php活动状态,以便它每秒检查新信息:

function getNewMessages()
{
    $arrOfMessages = array();
    $selectQuery = "SELECT * FROM messages WHERE unread=1";
    $result = mysql_query($selectQuery);
    return $arrOfMessages;
}
if(count($newMessages) > 0)
{ ... } 

意识到一秒钟制作一次选择并不是什么大事。

解决方案 2.

我想另一种方法看起来像这样:

  • 服务器.php接受有关客户端 IP 的数据并将其绑定到用户会话;
  • 将其存储在数据库中;发送.php打开与客户端和向其发送消息。

这样,消息将在发送方客户端通过 REST 接口"发送"后立即发送到客户端,不会在任何地方运行检查循环。您甚至可以使您的服务器.php(顺便说一句,标题在此解决方案中具有误导性)通过REST接口接受IP,因此不需要额外的TCP/UDP连接。

解决方案 3.

如今,许多客户端(如iOS)都有推送通知系统,如果客户端每天没有收到太多消息,最好的方法是通过推送通知传递它们。这样,您就不必拥有低级别的网络连接,REST接口就足够了。