我正在使用每秒都在变化的服务器端变量来创建应用程序。每一秒都需要在所有打开网页的客户端上显示这些新变量。
现在大多数人都告诉我要用彗星,因为我需要每秒推/拉数据,现在我有几个问题:
什么是更好的解决方案,我需要新的数据EVERY SECOND,从客户端拉出或推送服务器?
此外,服务器端的项目ID(具有该ID的变量)可以更改,当客户端刷新页面时,他需要获取最早(和生命)的ID。这意味着我在客户端的jquery / javascript必须知道他在页面上得到了哪个ID,最好的方法是什么?
最后一件事是我找不到一个好的(不贵)彗星库/ api for asp.net(C#)。有没有人用过彗星图书馆,效果很好?我们正在寻找一个应该能够随时拥有2000个彗星连接的站点。
答案 0 :(得分:5)
在PokeIn ASP.NET ajax库中有一个SendToAll函数。
答案 1 :(得分:3)
WebSync是一个用于IIS和ASP.NET的完整可扩展的彗星服务器。它可以无缝集成到您的应用程序堆栈中,以支持每个服务器节点上数千个客户端的实时数据通信。
查看它,可以免费获得社区版。
答案 2 :(得分:2)
什么是更好的解决方案 看着我需要的事实 新数据每一秒,从中拉出来 客户端还是推送服务器?
我认为这并不重要,因为请求与新数据可用时间之间的时间相当短。在前一个成功之后,我将在客户端实例化一个新的XMLHttpRequest。您可以向服务器发送最后收到的数据(如果不是太大),以便它可以将该数据与服务器上当前可用的数据进行比较,并仅在新数据可用时发送回来。
还有项目ID 服务器端(使用变量的那个 ID得到)可以改变,当客户端 刷新他需要的页面 最古老(和生活)的ID。这个会 意思是我的jquery / javascript就可以了 客户端必须知道他是哪个ID 登上页面,最好的办法是什么 这样做?
我不完全确定我理解你的意思,但如果我是对的,你可以将每个名字/值对存储在一个对象中。当新变量到达客户端时,它不会覆盖现有数据;当某个变量已经存在时,它将使用最新值进行更新。它可能看起来像:
{ first_variable: 345,
second_one: "foo",
and_the_third: ["I", "am", "an", "array,", "hooray!"]
}
当新的second_one
状态到来时,例如"bar"
,对象更新为:
{ first_variable: 345,
second_one: "bar",
and_the_third: ["I", "am", "an", "array,", "hooray!"]
}
最后一件事是我找不到好的 (不贵)彗星库/ api 对于asp.net(C#)。任何人曾经使用过 彗星图书馆效果不错?
我没有使用ASP.NET的任何经验,但您是否需要这样的库?难道你不能自己编写服务器端代码,正如我所说,这使得连接保持打开状态并定期(不断地)将当前状态与之前发送的状态进行比较?
UPDATE:为了表明在服务器端保持连接打开并不困难,我将向您展示我在PHP中编写的长轮询模拟:
<?php
sleep(5);
?>
<b>OK!</b>
您可以轻松地在循环中测试状态的变化,而不是让进程sleep
几秒钟。而不是发送任意HTML元素,您可以发回数据,例如以JSON表示法。我无法想象在ASP.NET / C#中很难做到这一点。