Ste*_*ger 8 javascript ajax asp.net-mvc json xmlhttprequest
我必须对网站进行编程,但我宁愿不喜欢静态HTML性质.我更喜欢客户端 - 服务器架构.
现在我已经想到,使用XMLhttp,您基本上可以动态更新页面并向/从服务器发送/请求信息/操作.所以这基本上涵盖了客户区域.
但是,要完成客户端 - 服务器体系结构,服务器也必须发送/请求信息,而不进行查询.
有没有办法,例如对于聊天服务器,将收到的消息发送回所有客户端(客户端使用Web浏览器),而客户端不必在固定的时间间隔内查询?我想实现一个人在你输入内容时可以看到的内容.
End*_*ssa 13
有几种不同的方法可以实现这一目标.其中一些已在这里得到解答,但我想要包括一些以及我对它们的想法.
1.投票
经常向服务器发出请求以检查新信息.这是最糟糕的方式,但可能是最简单的方法.如果您的网站用户数量较少,则可能需要这样做.
这可以通过使用setInterval(myFunction, n)javascript XMLHttpRequests每n毫秒发送到服务器来完成.然后,在服务器上,您可以使用新信息(如果有)或某些不显示新信息的消息对此进行响应.
2.长轮询
加载页面时,它向服务器发出新信息请求.服务器保持连接打开,直到有东西要发回.此方法可减少使用的网络流量,但会增加服务器上使用的资源.您可以将此用于少数用户,但它不能很好地扩展.
最简单的方法是让处理AJAX请求的页面等待新信息可用,然后响应.这可能会占用您服务器上的大量连接.所以,要小心使用.
COMET
COMET基本上是长轮询,但服务器设置正确.它知道这些连接不是"真实的",并且它使用较少的资源来处理它们.这是解决此问题的绝佳解决方案,但它要求为此目的明确设置服务器.有其他流行服务器的COMET服务器和COMET插件,但它需要一些设置,有时需要一些钱.
在.NET上实现这一点并不是世界上最简单的事情.您可以为解决方案付费,尝试找到其他类似代码的代码,或者尝试自己编写代码.我没有找到任何体面的免费解决方案.如果其他人有,请发表评论.
4. RIA
另一种解决方案是在页面上包含Flash,Silverlight或Java Applet.人们通常使用1x1对象来执行此操作,以便他们可以使用Flash或Silverlight与服务器通信.如果您不介意添加依赖项,这是一个不错的解决方案.如果您已经了解Silverlight或Flash,则实现起来可能相对简单.
您可以在互联网上找到每个选项的教程.
5. Web套接字
如果您处于最前沿,可以查看Web套接字.它仅适用于最新版本的现代浏览器.它是HTML5的一部分,但它现在可能是它自己的规范.无论如何,这意味着旧版浏览器将无法处理它.但是,如果你不介意将自己限制在最新的浏览器中,你可以使用这个神奇的功能.
我相信Chromium是目前唯一支持它的浏览器.但是,有一些工作要在Firefox和WebKit中实现.
我会免除你的争议,只是说这完全符合你的要求.规范的摘要说明了一切.
此规范定义了一个API,使Web页面能够使用Web套接字协议与远程主机进行双向通信.
特别提及
如果您对Node JS的世界感兴趣,那么Socket IO就不会出错.它将实现浏览器可用的最佳技术.
结论
最好的选择是Node JS上的Socket.IO.但是,对于ASP.Net解决方案,如果可以,请选择COMET或Web套接字.否则,使用Flash/Silverlight并不可怕.最后,民意调查和长期民意调查应该是最后的度假胜地.您可以随时支持其中一个,如果在客户端的浏览器中不支持它,则可以回退到另一个.
| 归档时间: |
|
| 查看次数: |
1995 次 |
| 最近记录: |