我正在制作一个带有每秒变化的服务器端变量的应用程序。这些新变量需要每秒在所有打开该网页的客户端上显示。
现在大多数人告诉我要使用 cometd ,因为我需要每秒推/拉数据,现在我有几个问题:
最佳答案
我认为这没什么大不了的,因为从请求到提供新数据之间的时间很短。在上一个成功之后,我将在客户端实例化一个新的XMLHttpRequest。您可以向服务器发送最后收到的数据(如果不是太大的话),这样它就可以将该数据与服务器上的当前数据进行比较,并且仅在有新数据可用时才将其发送回去。
我不能完全确定我理解您的意思,但是如果我是对的,您可以将每个名称/值对存储在一个对象中。当新变量到达客户端时,它不会覆盖现有数据。当某个变量已经存在时,将使用最新值进行更新。它可能看起来像:
{ 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!"]
}
我没有使用ASP.NET的经验,但是您是否需要这样的库?您不能只是自己编写服务器端代码,就像我说的那样,它使连接保持打开状态并定期(连续)比较当前状态和先前发送的状态吗?
更新:为了显示在服务器端保持连接打开并不难,我将向您展示我在PHP中编写的长时间轮询模拟:
<?php
sleep(5);
?>
<b>OK!</b>
无需让进程
sleep
停留几秒钟,您可以轻松地在循环中测试状态的变化。而不是发送任意HTML元素,您可以将数据发送回去,例如以JSON表示法。我无法想象在ASP.NET/C#中很难做到这一点。