cakephp 或 php 中的实时数据更新
Posted
技术标签:
【中文标题】cakephp 或 php 中的实时数据更新【英文标题】:realtime data updation in cakephp or php 【发布时间】:2013-08-10 14:01:29 【问题描述】:我正在开发 Cakephp 2.x。
我的视图页面上有一个加载器/微调器,它正在等待用户移动设备的响应。不幸的是,我完全不知道如何从移动设备获取请求,并实时更新页面内容。
这里是函数
<script>
var cancelled = true;
$.modal.prompt('Enter message :', function(value)
$.ajax(
type:"POST",
data:value:value,
url:"/cakephp/api/getData/",
success : function(data)
//i am starting the spinner here ..
here i want to get the value from an android device ..as soon as i receive the value i want to stop the spinner
,
error : function()
alert("error");
);
, function()
);
;
我该怎么做?
【问题讨论】:
【参考方案1】:你可以通过三种方式做到这一点:
1- 使用webSocket
它是实时的,您应该通过带有javascript
的客户端和带有任何webSocket
服务器的服务器(例如node.js
或ratchet
)创建一个webSocket 连接。 webSocket
的缺点是一些旧浏览器不支持它。
2- 使用Long polling
,它像AJAX
一样创建到服务器的连接,但是keep-alive
连接打开了一段时间(虽然不长),在连接期间打开客户端可以从服务器接收数据。由于超时而关闭连接后,客户端必须定期重新连接。在服务器端,它仍然像HTTP
请求一样对待AJAX
。在客户端,您可以使用javascript
库,如strophe
,在服务器端可以使用ejabberd
来长拉服务器。
3-间隔使用AJAX
,您可以间隔发送请求以检查服务器中是否从用户的移动设备收到任何响应。但它不是真正的实时。
【讨论】:
jsonp 呢?这在 jsonp 中可能吗? 这取决于你。如果您的用户使用现代浏览器,最好的方法是 websocket,如果不是长拉更好,但长拉比 ajax 有点复杂。 JSONP 是一种用于在 Web 浏览器中运行的 JavaScript 程序的通信技术。它主要用于网络服务,我认为这与您的问题无关。 好吧,我从来没有在 websockets 上工作过。我什至不知道它的事情。谢谢你的回答。所以你说这三个只是我的问题的解决方案 你的问题很不清楚,如果你把你的解决方案描述的更详细一些,我可以给你更详细的解决方案。 先生,实际上问题是我正在通过 ajax 向我的控制器功能发送一些数据..一旦数据进入控制器..我正在启动微调器......现在在控制器功能中我正在向在线 api 发送一些参数,如果 api 成功执行,这会给我一些结果..记住 api ...api 向 android 设备发送一些数据///...现在我想从android 到我的 webapp,这样我就可以停止微调器 ..以上是关于cakephp 或 php 中的实时数据更新的主要内容,如果未能解决你的问题,请参考以下文章