Jul*_*ian 5 javascript c# asp.net comet
我正在使用服务器端变量进行应用程序,每秒都会发生变化.每一秒都需要在所有打开网页的客户端上显示这些新变量.
现在大多数人都告诉我要用彗星,因为我需要每秒推/拉数据,现在我有几个问题:
什么是更好的解决方案,看看我需要新的数据EVERY SECOND,从客户端拉出或推送服务器?
此外,服务器端的项目ID(具有该ID的变量)可以更改,当客户端刷新页面时,他需要获取最早(和生存)的ID.这意味着我在客户端的jquery/javascript必须知道他在页面上得到了哪个ID,最好的方法是什么?
最后一件事是我找不到一个好的(不贵)彗星库/ api for asp.net(C#).有没有人用过彗星图书馆,效果很好?我们正在寻找一个应该能够随时拥有2000个彗星连接的站点.
考虑到我每秒都需要新数据(从客户端拉取或通过服务器推送),什么是更好的解决方案?
我认为这并不重要,因为请求之间的时间和新数据可用的时间相当短。在前一个请求成功后,我将在客户端实例化一个新的 XMLHttpRequest。您可以向服务器发送最后收到的数据(如果不是太大),以便服务器可以将该数据与服务器上当前可用的数据进行比较,并且仅在新数据可用时才发回某些数据。
此外,服务器端的项目 ID(以及 ID 获得的变量)可能会更改,并且当客户端刷新页面时,他需要获取最旧的(且有效的)ID。这意味着我在客户端的 jquery/javascript 必须知道他在页面上获得的 ID,最好的方法是什么?
我不完全确定我理解你的意思,但如果我是对的,你可以将每个名称/值对存储在一个对象中。当新变量到达客户端时,它不会覆盖现有数据;当某个变量已经存在时,它会被更新为最新值。它可能看起来像:
{ first_variable: 345,
second_one: "foo",
and_the_third: ["I", "am", "an", "array,", "hooray!"]
}
Run Code Online (Sandbox Code Playgroud)
当 的新状态second_one到达时,例如"bar",对象将更新为:
{ first_variable: 345,
second_one: "bar",
and_the_third: ["I", "am", "an", "array,", "hooray!"]
}
Run Code Online (Sandbox Code Playgroud)
最后一件事是我找不到一个好的(不太昂贵的)用于 asp.net (C#) 的 comet 库/api。有人使用过彗星库并取得了良好的效果吗?
我没有任何ASP.NET 经验,但是您需要这样的库吗?难道您不能自己编写服务器端代码吗?正如我所说,这使连接保持打开状态并定期(连续)将当前状态与先前发送的状态进行比较?
更新:为了表明在服务器端保持连接打开并不困难,我将向您展示我用 PHP 编写的长轮询模拟:
<?php
sleep(5);
?>
<b>OK!</b>
Run Code Online (Sandbox Code Playgroud)
sleep您可以轻松地循环测试状态的变化,而不是让该过程花费几秒钟。您可以将数据发送回来,例如以JSON表示法,而不是发送任意 HTML 元素。我无法想象在 ASP.NET/C# 中做到这一点会那么困难。
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |