Sencha Touch:实现轮询

Posted

技术标签:

【中文标题】Sencha Touch:实现轮询【英文标题】:Sencha Touch: Implementing Polling 【发布时间】:2011-09-14 19:02:25 【问题描述】:

我正在使用 Sencha Touch 为 Microsoft Lync 编写移动聊天客户端。

在服务器端,我正在使用 lyncwidget codeplex 项目 (http://lyncwidget.codeplex.com) 中支持 JSONP 的 WCF 服务 在被调用时,WCF 服务会将在服务器上排队的所有消息作为 JSON 数据返回。

这个想法是客户端定期轮询服务以检索任何新消息。

如果可能的话,我想直接在我的商店代理中实现轮询行为。所以在“ChatMessagesStore”中。

关于如何以简洁的方式实现这一点的任何建议?

谢谢。

ps:我是 Sencha Touch 的新手。

【问题讨论】:

【参考方案1】:

最好的办法是扩展Ext.data.ScriptTagProxy 类。然后在里面有一个名为"pool-interval" 的属性和一个调用sync() 函数及其自身的方法。示例:

makeRequest()
  this.sync();
  setTimeout("this.makeRequest()",pool-interval);
;

这样,如果您有多个具有此类代理的商店,您就不必费心设置多个 setInterval 调用,也无需在更改商店名称时更改它们。

【讨论】:

如果您要自己调用 makeRequest,那么您可能应该使用 setTimeout 而不是 setInterval...?【参考方案2】:

定期在商店拨打sync() 怎么样?

例如调用

 setInterval("MyApp.stores.myStore.sync()", 3000);

将每三秒同步一次您的商店。

关于移动应用程序轮询的简短评论:它会像疯了一样耗尽电池。有人对替代方案/解决方法有想法吗?

【讨论】:

同步方法是自定义的吗?我似乎找不到任何文档。 不;查看Ext.data.Store中的sync方法定义

以上是关于Sencha Touch:实现轮询的主要内容,如果未能解决你的问题,请参考以下文章

sencha touch 2 中的谷歌地图实现(MVC 方式)

[Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容

sencha touch 之carousel

SENCHA:如何通过单击 SENCHA touch 中的添加/删除按钮动态添加/删除文本字段

[Sencha ExtJS & Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)

Sencha Touch 存储同步