2011-04-21 77 views
1

asp.net,如何从服务器触发客户端jquery事件。我想在我的聊天部分实现它...目前聊天似乎工作正常...但它有一个问题...我必须从客户端的浏览器每隔5秒发送一个请求到他的聊天记录..其中我觉得是不是个好主意......从服务器调用jquery函数

谁能为我的问题提供任何解决方案

+0

jQuery是客户端语言的一种手段,它只能运行在客户端的浏览器中。你无法从服务器调用它,但是,你可以在你的HTML代码中加入内联JavaScript,并且在客户端加载页面时执行。 – 2011-04-21 13:06:07

+0

实际上,如果您基于JQuery进行聊天,那么您必须通过轮询来完成。这意味着您必须每隔xxx秒发送一次ajax请求,并询问服务器是否有新消息。 – ITroubs 2011-04-21 13:07:45

+0

你好ITroubs ...这就是目前我在做什么...但它是一个好主意,每隔x秒后发送请求... – user321963 2011-04-21 13:12:23

回答

0

你正在做的,你可以没有进入像HTML5 WebSockets的这些是不是真的准备好经常使用做了最好的然而。

两个选项:

  • (保守的选项)接受,你将轮询服务器,优化你的轮询的方式,让冲击低。
  • (edgy选项)尝试一些模拟Websockets的新库。
+0

我们不能使用wcf技术,如wcf双工.. – user321963 2011-04-22 03:36:22

1

默认情况下,您需要使用客户端浏览器进行轮询。这就是ajax如何运作的。有一种叫做Comet的技术,这是一种推送模式。

你可以尝试使用像这样的jQuery插件:http://plugins.jquery.com/project/jQuery-Comet-Push-API

在(近)未来,您可以使用websocket以及HTML5。这里的信息取自http://channel9.msdn.com/Events/MIX/MIX11/HTM10

的WebSockets,一个新兴的规范 由W3C和IETF进行标准化, 将使web浏览器以及 客户端应用程序来打开 双向全双工 通信信道与远程 主机。

一定要看看MIX11视频!

+1

+1 for web sockets提到。此外,我们也许应该提到,彗星通常被称为“推”...推是一种用词不当。 Comet是一种(优化的)长轮询机制,因此,没有真正的订阅事件驱动的“推送”数据。 – 2011-04-21 13:16:59

0

虽然我不擅长ASP.Net,但可以通过其他方式解决此问题。

让服务器返回需要执行的函数的名称,然后在回调函数中调用它?

有点像这个(这只是一个错字,但)

$.post("yourpage.aspx", 
    { 
     d1: "v1" 
    }, 
    function(data) { 
    //now the data will hold the name of the function 
    window[data](); 
    } 
); 

现在你可以用上面的代码,在其他功能,并设置一个计时器,定期检查的响应,并执行如果条件匹配,则为函数。

P.S.我跳过了脚本检查条件是否匹配的部分。

0

欢迎来到HTTP世界。

这就是浏览器的工作原理。客户端向服务器发送请求并响应。现在没有别的办法了(现在)。这很简单,这是HTTP协议如此流行的原因之一。

但现在情况正在改变,HTML5支持网络套接字。如果您正在开发支持HTML5的设备(所有浏览器+ iPhone/iPad支持套接字的最新版本),那么websockets就是最好的选择。

另一方面,你可以用Comet轮询(如XIII所述)。基本上,客户端向服务器发送请求并等待服务器有任何响应。我不太清楚在ASP.NET中实现它的好方法是什么(因为我认为有并发连接的限制),但它是Nodejs中非常有用的技术。

+0

我们不能使用wcf的技术,如wcf duplex .. – user321963 2011-04-22 03:35:39

+0

双工通常在两台服务器相互协作时起作用。在用户场景中,我们有一个浏览器无法响应请求,它只能发出请求并得到响应。 – neebz 2011-04-22 07:56:33