问题
我开发了一个相当复杂的项目,它使用 PHP 和 Laravel 作为后端。该站点的用户标记可用或不可用以响应呼叫(如在调度中),并且呼叫存储在 MySQL 表中。现在,整个操作在一个共享的 web 主机上运行,Laravel 4 处理站点和传入数据(例如 Twilio 和 Iron.io 推送队列)。
客户希望在他们办公室的监视器上显示系统的状态 - 一台计算机和电视监视器专门用于此。系统需要实时或尽可能接近,显示谁有空以及任何正在进行的呼叫。根本不会有用户与这方面的交互——它只是整天坐在那里显示数据。
现在,我只是使用 AJAX 在他们网站上托管的页面上每六秒请求一次 JSON。他们的网络并没有意识到这一点,我猜我们的共享托管环境从长远来看可能不会喜欢它。我需要的是一种将数据直接发送到该计算机的方法,并且仅在某些内容发生更改且没有任何用户交互客户端的情况下才将其显示在页面上。这是我正在寻找的流程 -
- 用户更新他们的状态(即可用或不可用),
- Laravel 4 后端接收请求(从使用 POST 数据的三种可能方式之一),将其存储在数据库中,
- 客户端计算机接收此新信息并将其显示在 HTML 表中
我想到的解决方案
Node.js 安装在客户端计算机上,而 Socket.io 看起来很有希望接收推送数据。但是,我无法完全拼凑出如何将数据从 PHP Laravel 4 服务器端发送到客户端,只有在发生某些事情时(用户状态发生变化,调用被添加到系统)。
我似乎只能在处理诸如聊天室之类的事情的 websockets 上找到信息——这更像是“坐几个小时,直到事情发生”处理从 MySQL 中提取数据并将其推出的需要。
我还想过在 Heroku 上设置一个 websocket 服务器,然后从那里向客户端发送数据——但我再次陷入了关于如何仅在数据库发生更改时才完成发送数据的问题(即 Laravel 接收 POST 数据然后用它做点什么)。
任何想法将不胜感激。谢谢!