2013-04-30 83 views
0

什么是推动数据实时客户端的最佳方式?当我遇到这个难题时,我正在使用新的html5历史API在测试网站上工作。使用AJAX实时搜索?

我使用Twitter的API,使学习之用实时搜索,但

所以,我明白,你基本上可以一遍又一遍提交表单,垃圾邮件PHP不休,但是这似乎并不像很好的解决方案。

什么是被创建的数据来获得数据的最佳方式? (使用jQuery,最好)

谢谢,大卫

编辑:我看着推进引擎,但有是一个办法做到这一点,而不必购买服务,对不对?

+0

对于推送技术,你没有买任何东西,如果你已经拥有一台服务器? – Bergi 2013-04-30 14:38:34

+0

我不知道有什么事情的当前状态的,但为了让服务器推送的连接需要保持开放。这是你想从网络服务器上得到的东西吗?特别是如果连接长时间没有做任何事情。有些客户端可能支持websocket,不确定服务器发送的事件。它曾被称为彗星技术:http://en.wikipedia.org/wiki/Comet_%28programming%29我的猜测是,服务器和客户端发送正确的头(连接:保持活着)与高时间到。 – HMR 2013-04-30 14:41:24

+0

只是在做这个教育目的,我不认为我会想推送服务器。我想我会调查网络套接字和轮询 – Alice 2013-04-30 17:09:40

回答

1

有两个(比实际更多,如果你有浏览器插件如Flash)可能的解决方案我看到:的WebSockets和投票。你不喜欢投票的想法,我会同意,这取决于情况。轮询具有保持用户会话存活的缺点 - 即他们永远不会注销 - 如果它轮询同一个域。但是,如果您将其设置为每5秒轮询一次,假设您设置为检查新数据,则负载非常小。有了jQuery,你可以实现一个setInterval来轮询(因为我相信你已经调查过了)。在另一个说明... WCF引入了一个称为轮询双工的基于HTTP的TCP-socket-like连接,允许客户端和服务器进行通信,就好像它们通过TCP连接一样。你可以查看这些表现 - 如果你想以某种方式实现,那并不是那么糟糕。我使用Silverlight来实现这一点。 Websockets是一种相对较新的技术,可以为您提供双向沟通,但您将客户限制为使用支持这些技术的浏览器的客户。您还必须处理浏览器特定的问题。

+0

谢谢你提供的信息丰富的答案。我会研究网络套接字和投票,并与我的学习冒险的人一起工作(我坚信不要使用诸如flash和silverlight等插件的网站)。因为我将使用API​​来获取我的信息,但是,似乎5秒轮询可能是最佳选择。我现在在打电话;稍后将研究websockets。再一次,谢谢:) – Alice 2013-04-30 17:06:07

+0

刚刚试用了php的websockets。不可靠。我想我会坚持投票。 – Alice 2013-04-30 19:43:18