日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

关于.NET中的Server push技术

發布時間:2025/3/15 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于.NET中的Server push技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于.NET中的Server push技術

一般來說方法有2種,一種就是客戶端用JS異步定時輪詢服務器端,這種是大部分人采用的方法,但是我在想到底可以不可以實現服務器端有改變時才會主動推送到客戶端呢?按理來說這種方式對于B/S是不可能實現的,因為B/S是無連接的,這種request/response的方式無法保持狀態。搜了一下,看到博客園有位朋友寫了篇文章是關于Server Push的,文章點這里看,我自己把它的代碼復制過來看了下效果,完整代碼如下:

前臺:

以下為引用的內容:

1?<%@?Page?Language="C#"?AutoEventWireup="true"?CodeBehind="ServerPushDemo.aspx.cs"?Inherits="WebDemo.ServerPush.ServerPushDemo"?%>
?2?
?3?<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
?4?
?5?<html?xmlns="http://www.w3.org/1999/xhtml"?>
?6?<head?runat="server">
?7?????<title>無標題頁</title>
?8?????<script?type="text/javascript">
?9?????????function?SetValue(time)
10?
????????{
11?????????????document.getElementById("TbTime").value=
time;
12?
????????}
13?????</script>

14?</head>
15?<body>
16?????<form?id="form1"?runat="server">
17?????<div>
18?????????<input?type="text"?id="TbTime"/>
19?????</div>
20?????</form>
21?</body>
22?</html>
23?

后臺代碼:

以下為引用的內容:

using?System;
using
?System.Collections;
using
?System.Configuration;
using
?System.Data;
using
?System.Linq;
using
?System.Web;
using
?System.Web.Security;
using
?System.Web.UI;
using
?System.Web.UI.HtmlControls;
using
?System.Web.UI.WebControls;
using
?System.Web.UI.WebControls.WebParts;
using
?System.Xml.Linq;
using
?System.Threading;

namespace
?WebDemo.ServerPush
{
????
public?partial?class
?ServerPushDemo?:?System.Web.UI.Page
????{
????????
protected?void?Page_Load(object
?sender,?EventArgs?e)
????????{

????????}

????????
protected?override?void
?Render(HtmlTextWriter?writer)
????????{
????????????
base
.Render(writer);
????????????Response.Buffer?
=?true
;
????????????
bool?isOutput?=?false
;
????????????Response.Write(
""
);

????????????Response.Flush();
????????????
int?lastsecond?=?0
;
????????????
while
?(Response.IsClientConnected)
????????????{
????????????????Thread.Sleep(
300
);
????????????????
if?(DateTime.Now.Second?!=?lastsecond?&&?!
isOutput)
????????????????{

????????????????????lastsecond?
=
?DateTime.Now.Second;
????????????????????Response.Write(
"<script>SetValue('"?+?DateTime.Now.ToString()?+?"') ?</script>?"
);
????????????????????Response.Flush();
????????????????????isOutput?
=?true
;
????????????????}
????????????????
else

????????????????{
????????????????????isOutput?
=?false;
????????????????}

????????????}

????????}
????}
}

這種方式的實現原理其實就是在OnRender事件里,用循環掛起連接,因為服務器端沒有response完畢,所以一直和客戶端保持連接,雖然這種方式能實現服務器端向客戶端的推送,但它的代價太大,因為web的優勢就是無連接。這樣每個客戶端都要占用服務器端的一個IIS連接,如果用戶超過百個,就會非常恐怖的。所以這種方式我覺得不可取,相比來說,還是用AJAX的方式定時輪詢更好。

真正意義上的Server Push好像我找了一些文章在Cgi里可以實現,點這里看。但在.net里的實現我就不得而知了,知道的高人請指點下,呵呵。

我還搜到一個關于.net推技術的就是Comet框架,可以實現長連接的,具體文章請點這里。改天我會把相關Demo發出來.

總結

以上是生活随笔為你收集整理的关于.NET中的Server push技术的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。