亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET中ServerPush用法實例分析

2024-07-10 13:29:07
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了ASP.NET中ServerPush用法,實例分析了通過ServerPush實現服務器推送功能,需要的朋友可以參考下

本文實例講述了ASP.NET中ServerPush用法。分享給大家供大家參考。具體分析如下:

什么是ServerPush,服務器向客戶端“推送“,其實就是”長連接“

只有瀏覽器請求服務器端,服務器端才給瀏覽器響應數據,不會主動向瀏覽器推送數據,這是一種安全考慮,也是提高服務器的性能考慮,如果服務器向瀏覽器主動推送數據,就要用到ServerPush等技術模擬實現。

舉個例子:

通過兩個頁面互相發送消息實現,消息放到數據庫。

 

 
  1. /// <summary> 
  2. /// ServerPush1 的摘要說明 
  3. /// </summary> 
  4. public class ServerPush1 : IHttpHandler 
  5. public void ProcessRequest(HttpContext context) 
  6. context.Response.ContentType = "application/json"
  7. string action = context.Request["action"]; 
  8. if (action == "send")//發送 
  9. string me = context.Request["me"]; 
  10. string toUserName = context.Request["toUserName"]; 
  11. string msg = context.Request["msg"]; 
  12. SQLHpler.ExecuteNonQuery("INSERT INTO T_Msgs(FromUserName,ToUserName,Msg) VALUES(@FromUserName,@ToUserName,@Msg)"new SqlParameter("@FromUserName", me), 
  13. new SqlParameter("@ToUserName", toUserName), 
  14. new SqlParameter("@Msg", msg)); 
  15. context.Response.Write(new JavaScriptSerializer().Serialize(new { Status = "ok" })); 
  16. else if (action == "receive"
  17. //登陸,并持續查詢、接收對方發過來的數據 
  18. //做一個簡單的例子,以ServerPush1.ashx?me=sean 
  19. //請把發給sean的消息發給我一條 
  20. string me = context.Request["me"]; 
  21. while (true
  22. DataTable dt = SQLHpler.ExecuteQuery("SELECT TOP 1 * FROM T_Msgs WHERE ToUserName=@ToUserName",new SqlParameter("@ToUserName", me)); 
  23. if (dt.Rows.Count <= 0) 
  24. Thread.Sleep(500);//沒找到,休息500ms再查詢,這樣避免對數據庫的查詢壓力,和占用WEB服務器CPU資源 
  25. continue;//下一次while 
  26. else 
  27. DataRow row = dt.Rows[0]; 
  28. long id = (long)row["Id"]; 
  29. string fromUserName = (string)row["FromUserName"]; 
  30. string msg = (string)row["Msg"]; 
  31. //查詢完之后要刪除消息,否則會出現死循環,不停的給頁面輸出同一個消息 
  32. SQLHpler.ExecuteNonQuery("DELETE FROM T_Msgs WHERE Id=@Id",new SqlParameter("@Id",id)); 
  33. //創建一個匿名對象,將查詢到的數據存到里面 
  34. var data = new { FromUserName = fromUserName, Msg = msg, Id = id }; 
  35. string json = new JavaScriptSerializer().Serialize(data);//將匿名對象轉換為json 
  36. context.Response.Write(json);//將請求結果以json格式返回 
  37. break
  38. else 
  39. throw new Exception("action錯誤"); 

 

 
  1. <!DOCTYPE html> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title></title> 
  6. <script type="text/javascript" src="jquery-1.8.3.min.js"></script> 
  7. <script type="text/javascript"
  8. var rev = function () { 
  9. var mine = $('#me').val(); 
  10. $.ajax({ 
  11. type: 'post', url: 'serverPush1.ashx'
  12. data: { action: 'receive', me: mine },//傳給serverPush.ashx根據me查找發給me的消息 
  13. success: function (data) { 
  14. $('#ulMsg').append($('<li>' + data.FromUserName + '對我說:' + data.Msg + '</li>')); 
  15. rev();//收到消息后再向服務器請求數據,再給我一條消息 
  16. }, 
  17. error: function () { 
  18. rev(); 
  19. //哪怕網絡請求失?。ū热缬脩艟W絡故障),也再次發送請求 
  20. }); 
  21. }; 
  22. $(function () { 
  23. //發送 
  24. $('#btnSend').click(function () { 
  25. var myName = $('#me').val(); 
  26. var toUserName = $('#toUserName').val(); 
  27. var msg = $('#msgContext').val(); 
  28. $.ajax({ 
  29. type: 'post', url: 'serverPush1.ashx'
  30. data: { action: 'send', me: myName, toUserName: toUserName, msg: msg },//根據用戶輸入的信息,傳到服務端ServerPush.ashx進行插入操作 
  31. success: function (data) { 
  32. if (data.Status == 'ok') {//如果發送成功, 
  33. $('#ulMsg').append($('<li>我對' + toUserName + '說:' + msg + '</li>')); 
  34. $('#msgContext').val(''); 
  35. else { 
  36. alert('發送出錯,返回報文無法識別'); 
  37. }, 
  38. error: function () { 
  39. alert('發送出錯'); 
  40. }); 
  41. }); 
  42. //登陸,接收數據 
  43. $('#btnLogin').click(function () { 
  44. rev(); 
  45. $(this).attr("disabled""disabled"); 
  46. }); 
  47. /* 
  48. $('#btnLogin').click(function () {//接收 
  49. var mine = $('#me').val(); 
  50. $.ajax({ 
  51. type: 'post', url: 'serverPush1.ashx', 
  52. data: { action: 'receive', me: mine }, 
  53. //傳給serverPush.ashx根據me查找發給me的消息 
  54. success: function (data) { 
  55. $('#ulMsg').append($('<li>' + data.toUserName + '對我說:' + data.msg + '</li>')); 
  56. }, 
  57. error: function () { 
  58. alert('接收失敗'); 
  59. } 
  60. }); 
  61. });*/ 
  62. }); 
  63. </script> 
  64. </head> 
  65. <body> 
  66. 發送人:<input type="text" id="me" /><input type="button" id="btnLogin" value="登陸" style=""/><br /> 
  67. 接收人:<input type="text" id="toUserName" /><br /> 
  68. 輸入消息:<input type="text" id="msgContext" /><input type="button" id="btnSend" value="發送" /><br /> 
  69. 聊天記錄:<br /> 
  70. <ul id="ulMsg"
  71. </ul> 
  72. </body> 
  73. </html> 

希望本文所述對大家的asp.net程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人一区二区三区电影| 超在线视频97| 欧美另类老女人| 国产精品一区=区| 国产99视频精品免视看7| 色综合伊人色综合网站| 91精品久久久久久综合乱菊| 国产成人aa精品一区在线播放| 97视频网站入口| 亚洲成色999久久网站| 欧美激情视频网站| 欧美午夜精品久久久久久浪潮| 2021国产精品视频| 亚洲影院色无极综合| 国产福利视频一区| 国产精品久久久久久av| 夜夜嗨av色综合久久久综合网| 日韩欧美中文字幕在线播放| 亚洲女人天堂网| 日韩美女视频免费看| 欧美性猛交xxxx乱大交蜜桃| 色哟哟入口国产精品| 亚洲欧美国产一区二区三区| 国产婷婷成人久久av免费高清| 亚洲第一av网站| 色视频www在线播放国产成人| 69国产精品成人在线播放| 日韩综合视频在线观看| 美女999久久久精品视频| 欧美在线影院在线视频| 久久偷看各类女兵18女厕嘘嘘| 国产91精品视频在线观看| 日本精品视频网站| 中文字幕视频一区二区在线有码| 久久99久久99精品中文字幕| 亚洲视频电影图片偷拍一区| 亚洲嫩模很污视频| 国产精品尤物福利片在线观看| 国产日本欧美视频| 最近2019年日本中文免费字幕| 中文字幕欧美日韩va免费视频| 亚洲一区二区三区成人在线视频精品| 久久免费视频在线| 欧美日韩亚洲成人| 国产日韩精品在线播放| 欧美日韩美女在线观看| 综合av色偷偷网| 亚洲美女免费精品视频在线观看| 日韩一区二区三区国产| 久久久噜噜噜久久中文字免| 国产精品无av码在线观看| 亚洲精品视频免费| 久久亚洲精品一区二区| 精品国产乱码久久久久久天美| 欧美性20hd另类| 亚洲国产精品专区久久| 日韩在线观看成人| 亚洲精品一区二区在线| 亚洲欧洲免费视频| 精品国偷自产在线| 日韩欧美在线中文字幕| 日本不卡免费高清视频| 亚洲精品不卡在线| 亚洲www永久成人夜色| 亚洲人线精品午夜| 国产精品免费福利| 欧美成人四级hd版| 国产精品久久久久久婷婷天堂| 国内精品免费午夜毛片| 久久国内精品一国内精品| 欧洲日韩成人av| 亚洲黄色成人网| 亚洲欧美日韩久久久久久| 亚洲欧美精品在线| 亚洲精品成a人在线观看| 成人久久久久久久| 亚洲国产欧美一区| 日韩欧美国产免费播放| 色视频www在线播放国产成人| 国产精品福利片| 亚洲欧洲一区二区三区在线观看| 综合av色偷偷网| 国产精品久久久精品| 国产精品久久久久久久久久免费| 中文字幕精品在线视频| 成人免费大片黄在线播放| 国产成人av在线播放| 在线观看欧美日韩国产| 国内精品久久久久久影视8| 欧美精品生活片| 欧美交受高潮1| 国产精品电影网站| 日韩在线中文视频| 久久亚洲精品中文字幕冲田杏梨| 国产综合久久久久久| 亚洲а∨天堂久久精品9966| 九九九久久久久久| 2019日本中文字幕| 亚洲色图日韩av| 亚洲二区中文字幕| 欧美一区二粉嫩精品国产一线天| 中文字幕欧美日韩精品| 亚洲国产精品国自产拍av秋霞| 国产精品日韩欧美| 精品国产精品三级精品av网址| 上原亚衣av一区二区三区| 国产精品一区二区久久| 色老头一区二区三区| 在线观看久久久久久| 91日本在线视频| 蜜臀久久99精品久久久无需会员| 欧美性开放视频| 日韩视频在线免费观看| 伊人伊人伊人久久| 日韩精品久久久久久福利| 亚洲精品一区在线观看香蕉| 欧美成人合集magnet| 久久久精品国产亚洲| 国产精品久久久久9999| 亚洲人成人99网站| 亚洲在线免费看| 日韩欧美亚洲国产一区| 亚洲a成v人在线观看| 中文字幕亚洲一区在线观看| 国产精品视频自在线| 精品久久久国产| 亚洲护士老师的毛茸茸最新章节| 97视频com| 欧美天天综合色影久久精品| 欧美激情成人在线视频| 久久久国产视频91| 久久久精品欧美| 亚洲视频axxx| 91免费国产网站| 日韩电视剧在线观看免费网站| 92看片淫黄大片看国产片| 在线视频日韩精品| 欧美黑人狂野猛交老妇| 日韩美女视频免费在线观看| zzijzzij亚洲日本成熟少妇| 欧美特黄级在线| 国内精品美女av在线播放| 成人激情综合网| 性色av一区二区三区在线观看| 精品无人国产偷自产在线| 亚洲缚视频在线观看| 国产精品久久久久福利| 2018国产精品视频| 亚洲精品成人免费| 欧美日韩中文字幕| 97碰碰碰免费色视频| 成人午夜一级二级三级| 日韩一级裸体免费视频| 欧美精品中文字幕一区| 欧美激情综合亚洲一二区| 日韩性生活视频| 精品激情国产视频| 51精品国产黑色丝袜高跟鞋| 成人精品久久av网站| 日韩av在线高清| 国产日本欧美一区二区三区| 福利一区福利二区微拍刺激| 国产精品偷伦免费视频观看的| 九九热r在线视频精品|