| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.Owin; |
| | | using Owin; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Web; |
| | | [assembly: OwinStartup(typeof(VueWebApi.App_Start.Startup))] |
| | | namespace VueWebApi.App_Start |
| | | { |
| | | public class Startup |
| | | { |
| | | public void Configuration(IAppBuilder app) |
| | | { |
| | | // é
ç½®éçº¿å¨ |
| | | app.MapSignalR(); |
| | | } |
| | | } |
| | | } |
| | |
| | | return TJson.toJson(mes); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region[æµè¯å®ç¯å¼å«] |
| | | [Route(template: "AppDeviceAnDengCallSave")] |
| | | [HttpPost] |
| | | public HttpResponseMessage AppDeviceAnDengCallSave(string eqpcode) |
| | | { |
| | | mes = AppDeviceManageBLL.AppDeviceAnDengCallSave(eqpcode); |
| | | return TJson.toJson(mes); |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | return AppDeviceManageDAL.AppDeviceRepairSave(username, maintcyc, json); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region[æµè¯å®ç¯å¼å«] |
| | | public static ToMessage AppDeviceAnDengCallSave(string eqpcode) |
| | | { |
| | | return AppDeviceManageDAL.AppDeviceAnDengCallSave(eqpcode); |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | return mes; |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | #region[æµè¯å®ç¯å¼å«] |
| | | public static ToMessage AppDeviceAnDengCallSave(string eqpcode) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | dynamicParams.Add("@wx_code", wxcode); |
| | | var data = DapperHelper.selectdata(sql, dynamicParams); |
| | | //è·ååæè®°å½çé»è®¤éä¸çå¤åä¾åºå䏿¶ææ¶çå¤åä¾åºåå对æ¯å¤æ |
| | | sql = @"select A.wx_code,B.name from TK_Wrk_OutRecord A |
| | | sql = @"select A.wx_code,B.name,A.fqty from TK_Wrk_OutRecord A |
| | | inner join TCustomer B on A.wx_code=B.code |
| | | where A.wo_code=@wo_code and A.step_code=@step_code and A.style='F' "; |
| | | where A.wo_code=@wo_code and A.step_code=@step_code and wx_code=@wx_code and A.style='F' "; |
| | | dynamicParams.Add("@wo_code", mesordercode); |
| | | dynamicParams.Add("@step_code", stepcode); |
| | | dynamicParams.Add("@wx_code", wxcode); |
| | | var da = DapperHelper.selectdata(sql, dynamicParams); |
| | | if (da.Rows[0]["WX_CODE"].ToString() != wxcode) |
| | | if (da.Rows.Count<=0) |
| | | { |
| | | sql = @"select A.wx_code,B.name,A.fqty from TK_Wrk_OutRecord A |
| | | inner join TCustomer B on A.wx_code=B.code |
| | | where A.wo_code=@wo_code and A.step_code=@step_code and A.style='F' "; |
| | | dynamicParams.Add("@wo_code", mesordercode); |
| | | dynamicParams.Add("@step_code", stepcode); |
| | | var da1 = DapperHelper.selectdata(sql, dynamicParams); |
| | | var dr = da1.AsEnumerable().ToList().Select(x => x.Field<int>("NAME")).ToList(); |
| | | string wxstring = (string.Join(",", dr.Select(x => x.ToString()).ToArray())); |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.Message = "æä½å¤±è´¥,å½åæ¶æå¤å便¹åºä¸ºï¼" + da.Rows[0]["NAME"].ToString() + "!"; |
| | | mes.Message = "æä½å¤±è´¥,å½åæ¶æå¤å便¹ä¸åæå¤åä¾åºåä¸å¹é
,åºä¸ºï¼ã"+wxstring+"ã!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | if ((decimal.Parse(sqty) + decimal.Parse(ngqty)) > decimal.Parse(da.Rows[0]["FQTY"].ToString())) //æ¶ææ°é+ä¸è¯æ°é>åææ°é |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.Message = "æä½å¤±è´¥,å½åæ¶ææ°é+ä¸è¯æ°é,ä¸è½å¤§äºåææ°é:"+da.Rows[0]["FQTY"].ToString()+"!"; |
| | | mes.data = null; |
| | | return mes; |
| | | } |
| | | //if (da.Rows[0]["WX_CODE"].ToString() != wxcode) |
| | | //{ |
| | | // mes.code = "300"; |
| | | // mes.count = 0; |
| | | // mes.Message = "æä½å¤±è´¥,å½åæ¶æå¤å便¹åºä¸ºï¼" + da.Rows[0]["NAME"].ToString() + "!"; |
| | | // mes.data = null; |
| | | // return mes; |
| | | //} |
| | | if (data.Rows.Count > 0) |
| | | { |
| | | //è·å主表æå¤§ID |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNet.SignalR; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Web; |
| | | |
| | | namespace VueWebApi.Hubs |
| | | { |
| | | public class ChatHub : Hub |
| | | { |
| | | /// <summary> |
| | | /// éæç¨æ·å表 |
| | | /// </summary> |
| | | private IList<string> userList = UserInfo.userList; |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// ç¨æ·çconnectionIDä¸ç¨æ·å对ç
§è¡¨ |
| | | /// </summary> |
| | | private readonly static Dictionary<string, string> _connections = new Dictionary<string, string>(); |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// åé彿°ï¼å端触åè¯¥å½æ°ç»æå¡å¨ï¼æå¡å¨å¨å°æ¶æ¯åéç»å端ï¼ï¼Clients.All.(彿°å)æ¯å
¨ä½å¹¿æï¼å¦å¤Clientsæä¾äºç»æï¼å¹¿ææé¤ï¼ç»ææé¤ï¼æå®ç¨æ·æåççï¼ |
| | | /// è¯¥å½æ°åå¨åç«¯ä½¿ç¨æ¶ä¸å®è¦æ³¨æï¼å端è°ç¨è¯¥å½æ°æ¶ï¼å½æ°é¦åæ¯ä¸å®è¦å°å |
| | | /// </summary> |
| | | /// <param name="name1">åèµ·è
</param> |
| | | /// <param name="name2">æ¶æ¯æ¥æ¶è
</param> |
| | | /// <param name="cont">æ¶æ¯å
容</param> |
| | | public void SendByGroup(string name1, string name2, string cont) |
| | | { |
| | | //Clientå
ä¸ºç¨æ·çidï¼æ¯å¯ä¸çï¼SendMessage彿°æ¯åç«¯å½æ°ï¼æææ¯æå¡å¨å°è¯¥æ¶æ¯æ¨éè³å端 |
| | | Clients.Client(_connections[name2]).SendMessage("æ¥èªç¨æ·:" + name1 + " å
容ï¼" + cont + "" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "çæ¶æ¯æ¨éï¼"); |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// ç¨æ·ä¸çº¿å½æ° |
| | | /// </summary> |
| | | /// <param name="name"></param> |
| | | public void SendLogin(string name) |
| | | { |
| | | if (!userList.Contains(name)) |
| | | { |
| | | userList.Add(name); |
| | | //è¿é便æ¯å°ç¨æ·idåå§åèç³»èµ·æ¥ |
| | | _connections.Add(name, Context.ConnectionId); |
| | | } |
| | | else |
| | | { |
| | | //æ¯æ¬¡ç»éidä¼åçåå |
| | | _connections[name] = Context.ConnectionId; |
| | | } |
| | | //æ°ç¨æ·ä¸çº¿ï¼æå¡å¨å¹¿æè¯¥ç¨æ·å |
| | | Clients.All.loginUser(userList); |
| | | } |
| | | } |
| | | public class UserInfo |
| | | { |
| | | public static IList<string> userList = new List<string>(); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <title></title> |
| | | <script src="../Scripts/jquery-3.4.1.min.js"></script> |
| | | <script src="../Scripts/jquery.signalR-2.2.2.min.js"></script> |
| | | <script src="/SignalR/Hubs"></script> |
| | | </head> |
| | | <body> |
| | | <h1>æµç¨æ¼ç¤º</h1> |
| | | <input type="hidden" id="displayname" /> |
| | | <h2 id="thisname"></h2><br /> |
| | | <select id="username" style="width:153px;"> |
| | | </select> |
| | | <input id="cont" type="text" style="width:300px;"> |
| | | <input id="send" type="button" value="åé" /> |
| | | <div> |
| | | <h1 id="messgae"></h1> |
| | | </div> |
| | | <script type="text/javascript"> |
| | | |
| | | $(function () { |
| | | //å端Hubç使ç¨ï¼æ³¨æçæ¯ï¼Hubçå忝ChatHubï¼è¿éä½¿ç¨æ¶é¦åæ¯å°å |
| | | var work = $.connection.chatHub; |
| | | /*$('#displayname').val(prompt('请è¾å
¥æµç§°:', ''));*/ |
| | | $('#displayname').val("å¼ ä¸"); |
| | | $('#thisname').text('å½åç¨æ·ï¼' + $('#displayname').val()); |
| | | |
| | | |
| | | |
| | | //对åºå端çSendMessage彿°ï¼æ¶æ¯æ¥æ¶å½æ° |
| | | work.client.sendMessage = function (message) { |
| | | $('#messgae').append(message + '</br>') |
| | | }; |
| | | |
| | | |
| | | |
| | | //å端SendLoginè°ç¨åï¼äº§ççloginUseråè° |
| | | work.client.loginUser = function (userlist) { |
| | | reloadUser(userlist); |
| | | }; |
| | | |
| | | |
| | | |
| | | //hubè¿æ¥å¼å¯ |
| | | $.connection.hub.start().done(function () { |
| | | var username = $('#displayname').val(); |
| | | //åéä¸çº¿ä¿¡æ¯ |
| | | work.server.sendLogin(username); |
| | | |
| | | //ç¹å»æé®ï¼åéæ¶æ¯ |
| | | $('#send').click(function () { |
| | | var friend = $('#username').val(); |
| | | var cont = $('#cont').val(); |
| | | //è°ç¨åç«¯å½æ°ï¼åéæå®æ¶æ¯ |
| | | work.server.sendByGroup(username, friend, cont); |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | //éæ°å è½½ç¨æ·å表 |
| | | var reloadUser = function () { |
| | | $("#username").empty(); |
| | | for (i = 0; i < 5; i++) { |
| | | $("#username").append("<option value=" + i + ">" +i + "</option>"); |
| | | } |
| | | } |
| | | //var reloadUser = function (userlist) { |
| | | // $("#username").empty(); |
| | | // for (i = 0; i < userlist.length; i++) { |
| | | // $("#username").append("<option value=" + userlist[i] + ">" + userlist[i] + "</option>"); |
| | | // } |
| | | //} |
| | | </script> |
| | | </body> |
| | | </html> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <title></title> |
| | | <script src="../Scripts/jquery-3.4.1.min.js"></script> |
| | | <script src="../Scripts/jquery.signalR-2.2.2.min.js"></script> |
| | | <script src="/SignalR/Hubs"></script> |
| | | </head> |
| | | <body> |
| | | <h1>æµç¨æ¼ç¤º</h1> |
| | | <input type="hidden" id="displayname" /> |
| | | <h2 id="thisname"></h2><br /> |
| | | <select id="username" style="width:153px;"> |
| | | </select> |
| | | <input id="cont" type="text" style="width:300px;"> |
| | | <input id="send" type="button" value="åé" /> |
| | | <div> |
| | | <h1 id="messgae"></h1> |
| | | </div> |
| | | <script type="text/javascript"> |
| | | |
| | | $(function () { |
| | | //å端Hubç使ç¨ï¼æ³¨æçæ¯ï¼Hubçå忝ChatHubï¼è¿éä½¿ç¨æ¶é¦åæ¯å°å |
| | | var work = $.connection.chatHub; |
| | | /*$('#displayname').val(prompt('请è¾å
¥æµç§°:', ''));*/ |
| | | $('#displayname').val("1"); |
| | | $('#thisname').text('å½åç¨æ·ï¼' + $('#displayname').val()); |
| | | |
| | | |
| | | |
| | | //对åºå端çSendMessage彿°ï¼æ¶æ¯æ¥æ¶å½æ° |
| | | work.client.sendMessage = function (message) { |
| | | $('#messgae').append(message + '</br>') |
| | | }; |
| | | |
| | | |
| | | //hubè¿æ¥å¼å¯ |
| | | $.connection.hub.start().done(function () { |
| | | var username = $('#displayname').val(); |
| | | //åéä¸çº¿ä¿¡æ¯ |
| | | work.server.sendLogin(username); |
| | | |
| | | }); |
| | | }); |
| | | |
| | | //éæ°å è½½ç¨æ·å表 |
| | | //var reloadUser = function () { |
| | | // $("#username").empty(); |
| | | // for (i = 0; i < 5; i++) { |
| | | // $("#username").append("<option value=" + i + ">" +i + "</option>"); |
| | | // } |
| | | //} |
| | | //var reloadUser = function (userlist) { |
| | | // $("#username").empty(); |
| | | // for (i = 0; i < userlist.length; i++) { |
| | | // $("#username").append("<option value=" + userlist[i] + ">" + userlist[i] + "</option>"); |
| | | // } |
| | | //} |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
| | | <PropertyGroup> |
| | | <_PublishTargetUrl>D:\ç½ç«åå¸\XKDMesApi</_PublishTargetUrl> |
| | | <History>True|2022-08-30T04:55:16.4084322Z;True|2022-08-30T10:12:08.0975252+08:00;True|2022-08-30T09:12:46.2845546+08:00;True|2022-08-30T08:58:47.8389468+08:00;True|2022-08-29T17:21:17.7779579+08:00;True|2022-08-29T17:17:49.5334583+08:00;True|2022-08-29T16:53:46.6019453+08:00;True|2022-08-29T16:46:50.8158231+08:00;True|2022-08-29T12:25:19.0140888+08:00;True|2022-08-26T17:02:52.4614637+08:00;True|2022-08-26T16:52:47.8585471+08:00;True|2022-08-26T16:47:02.5766798+08:00;True|2022-08-26T16:36:15.5793109+08:00;True|2022-08-26T16:15:55.1795297+08:00;True|2022-08-26T16:00:22.2697361+08:00;False|2022-08-26T15:58:16.7347649+08:00;True|2022-08-26T15:22:29.6367466+08:00;True|2022-08-25T20:02:24.4685508+08:00;True|2022-08-25T19:50:42.8601696+08:00;True|2022-08-25T15:56:20.3615518+08:00;True|2022-08-25T15:48:16.9923580+08:00;True|2022-08-25T15:27:07.9474640+08:00;True|2022-08-25T13:11:36.9626131+08:00;True|2022-08-24T14:10:58.2790665+08:00;True|2022-08-24T11:43:10.4463552+08:00;True|2022-08-24T08:02:17.9871411+08:00;True|2022-08-23T22:50:41.0238571+08:00;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History> |
| | | <History>True|2022-08-30T09:36:34.5932064Z;True|2022-08-30T17:18:12.4582841+08:00;True|2022-08-30T12:55:16.4084322+08:00;True|2022-08-30T10:12:08.0975252+08:00;True|2022-08-30T09:12:46.2845546+08:00;True|2022-08-30T08:58:47.8389468+08:00;True|2022-08-29T17:21:17.7779579+08:00;True|2022-08-29T17:17:49.5334583+08:00;True|2022-08-29T16:53:46.6019453+08:00;True|2022-08-29T16:46:50.8158231+08:00;True|2022-08-29T12:25:19.0140888+08:00;True|2022-08-26T17:02:52.4614637+08:00;True|2022-08-26T16:52:47.8585471+08:00;True|2022-08-26T16:47:02.5766798+08:00;True|2022-08-26T16:36:15.5793109+08:00;True|2022-08-26T16:15:55.1795297+08:00;True|2022-08-26T16:00:22.2697361+08:00;False|2022-08-26T15:58:16.7347649+08:00;True|2022-08-26T15:22:29.6367466+08:00;True|2022-08-25T20:02:24.4685508+08:00;True|2022-08-25T19:50:42.8601696+08:00;True|2022-08-25T15:56:20.3615518+08:00;True|2022-08-25T15:48:16.9923580+08:00;True|2022-08-25T15:27:07.9474640+08:00;True|2022-08-25T13:11:36.9626131+08:00;True|2022-08-24T14:10:58.2790665+08:00;True|2022-08-24T11:43:10.4463552+08:00;True|2022-08-24T08:02:17.9871411+08:00;True|2022-08-23T22:50:41.0238571+08:00;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History> |
| | | </PropertyGroup> |
| | | <ItemGroup> |
| | | <File Include="Areas/HelpPage/HelpPage.css"> |
| | |
| | | <File Include="bin/log4net.dll"> |
| | | <publishTime>12/17/2021 18:45:06</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.AspNet.SignalR.Core.dll"> |
| | | <publishTime>05/04/2017 02:25:34</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.AspNet.SignalR.SystemWeb.dll"> |
| | | <publishTime>05/04/2017 02:25:40</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.AspNetCore.Http.Abstractions.dll"> |
| | | <publishTime>11/13/2018 01:29:00</publishTime> |
| | | </File> |
| | |
| | | </File> |
| | | <File Include="bin/Microsoft.Net.Http.Headers.dll"> |
| | | <publishTime>11/13/2018 01:28:58</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.Owin.dll"> |
| | | <publishTime>02/14/2018 00:28:04</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.Owin.Host.SystemWeb.dll"> |
| | | <publishTime>02/14/2018 00:28:12</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.Owin.Security.dll"> |
| | | <publishTime>02/14/2018 00:28:16</publishTime> |
| | | </File> |
| | | <File Include="bin/Microsoft.Web.Infrastructure.dll"> |
| | | <publishTime>07/25/2012 11:48:56</publishTime> |
| | |
| | | </File> |
| | | <File Include="bin/NPOI.pdb"> |
| | | <publishTime>04/26/2022 00:23:22</publishTime> |
| | | </File> |
| | | <File Include="bin/Owin.dll"> |
| | | <publishTime>11/13/2012 20:19:34</publishTime> |
| | | </File> |
| | | <File Include="bin/Pipelines.Sockets.Unofficial.dll"> |
| | | <publishTime>12/14/2021 20:20:48</publishTime> |
| | |
| | | <publishTime>12/24/2021 15:38:29</publishTime> |
| | | </File> |
| | | <File Include="bin/VueWebApi.dll"> |
| | | <publishTime>08/30/2022 12:55:10</publishTime> |
| | | <publishTime>08/30/2022 17:36:29</publishTime> |
| | | </File> |
| | | <File Include="bin/VueWebApi.dll.config"> |
| | | <publishTime>06/15/2022 15:31:43</publishTime> |
| | | </File> |
| | | <File Include="bin/VueWebApi.pdb"> |
| | | <publishTime>08/30/2022 12:55:10</publishTime> |
| | | <publishTime>08/30/2022 17:36:29</publishTime> |
| | | </File> |
| | | <File Include="bin/VueWebApi.xml"> |
| | | <publishTime>08/30/2022 12:55:10</publishTime> |
| | | <publishTime>08/30/2022 17:36:29</publishTime> |
| | | </File> |
| | | <File Include="bin/WebActivatorEx.dll"> |
| | | <publishTime>02/08/2013 16:42:28</publishTime> |
| | | </File> |
| | | <File Include="bin/WebGrease.dll"> |
| | | <publishTime>01/23/2014 13:57:34</publishTime> |
| | | </File> |
| | | <File Include="bin/zh-Hans/Microsoft.AspNet.SignalR.Core.resources.dll"> |
| | | <publishTime>05/04/2017 02:34:10</publishTime> |
| | | </File> |
| | | <File Include="bin/zh-Hans/Microsoft.AspNet.SignalR.SystemWeb.resources.dll"> |
| | | <publishTime>05/04/2017 02:34:16</publishTime> |
| | | </File> |
| | | <File Include="bin/zh-Hans/Microsoft.Owin.Host.SystemWeb.resources.dll"> |
| | | <publishTime>01/18/2019 12:59:56</publishTime> |
| | | </File> |
| | | <File Include="bin/zh-Hans/Microsoft.Owin.resources.dll"> |
| | | <publishTime>01/18/2019 12:59:58</publishTime> |
| | | </File> |
| | | <File Include="bin/zh-Hans/Microsoft.Owin.Security.resources.dll"> |
| | | <publishTime>01/18/2019 13:00:00</publishTime> |
| | | </File> |
| | | <File Include="bin/zh-Hans/System.Net.Http.Formatting.resources.dll"> |
| | | <publishTime>05/28/2022 07:34:44</publishTime> |
| | |
| | | <File Include="Grid/webapp-ws-tutorial.htm"> |
| | | <publishTime>07/08/2022 15:15:11</publishTime> |
| | | </File> |
| | | <File Include="Hubs/HubsMessage.html"> |
| | | <publishTime>08/30/2022 14:32:38</publishTime> |
| | | </File> |
| | | <File Include="Hubs/HubsMessage1.html"> |
| | | <publishTime>08/30/2022 14:51:37</publishTime> |
| | | </File> |
| | | <File Include="Image/1.png"> |
| | | <publishTime>08/11/2022 08:20:52</publishTime> |
| | | </File> |
| | |
| | | <File Include="Scripts/jquery-3.4.1.slim.min.map"> |
| | | <publishTime>06/10/2022 08:20:27</publishTime> |
| | | </File> |
| | | <File Include="Scripts/jquery.signalR-2.2.2.js"> |
| | | <publishTime>08/30/2022 13:49:42</publishTime> |
| | | </File> |
| | | <File Include="Scripts/jquery.signalR-2.2.2.min.js"> |
| | | <publishTime>08/30/2022 13:49:42</publishTime> |
| | | </File> |
| | | <File Include="Scripts/modernizr-2.8.3.js"> |
| | | <publishTime>06/10/2022 08:20:31</publishTime> |
| | | </File> |
| | |
| | | <publishTime>06/10/2022 08:20:24</publishTime> |
| | | </File> |
| | | <File Include="Web.config"> |
| | | <publishTime>08/30/2022 12:55:15</publishTime> |
| | | <publishTime>08/30/2022 17:36:34</publishTime> |
| | | </File> |
| | | </ItemGroup> |
| | | </Project> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /* jquery.signalR.core.js */ |
| | | /*global window:false */ |
| | | /*! |
| | | * ASP.NET SignalR JavaScript Library v2.2.2 |
| | | * http://signalr.net/ |
| | | * |
| | | * Copyright (c) .NET Foundation. All rights reserved. |
| | | * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | * |
| | | */ |
| | | |
| | | /// <reference path="Scripts/jquery-1.6.4.js" /> |
| | | /// <reference path="jquery.signalR.version.js" /> |
| | | (function ($, window, undefined) { |
| | | |
| | | var resources = { |
| | | nojQuery: "jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.", |
| | | noTransportOnInit: "No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.", |
| | | errorOnNegotiate: "Error during negotiation request.", |
| | | stoppedWhileLoading: "The connection was stopped during page load.", |
| | | stoppedWhileNegotiating: "The connection was stopped during the negotiate request.", |
| | | errorParsingNegotiateResponse: "Error parsing negotiate response.", |
| | | errorDuringStartRequest: "Error during start request. Stopping the connection.", |
| | | stoppedDuringStartRequest: "The connection was stopped during the start request.", |
| | | errorParsingStartResponse: "Error parsing start response: '{0}'. Stopping the connection.", |
| | | invalidStartResponse: "Invalid start response: '{0}'. Stopping the connection.", |
| | | protocolIncompatible: "You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.", |
| | | sendFailed: "Send failed.", |
| | | parseFailed: "Failed at parsing response: {0}", |
| | | longPollFailed: "Long polling request failed.", |
| | | eventSourceFailedToConnect: "EventSource failed to connect.", |
| | | eventSourceError: "Error raised by EventSource", |
| | | webSocketClosed: "WebSocket closed.", |
| | | pingServerFailedInvalidResponse: "Invalid ping response when pinging server: '{0}'.", |
| | | pingServerFailed: "Failed to ping server.", |
| | | pingServerFailedStatusCode: "Failed to ping server. Server responded with status code {0}, stopping the connection.", |
| | | pingServerFailedParse: "Failed to parse ping server response, stopping the connection.", |
| | | noConnectionTransport: "Connection is in an invalid state, there is no transport active.", |
| | | webSocketsInvalidState: "The Web Socket transport is in an invalid state, transitioning into reconnecting.", |
| | | reconnectTimeout: "Couldn't reconnect within the configured timeout of {0} ms, disconnecting.", |
| | | reconnectWindowTimeout: "The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection." |
| | | }; |
| | | |
| | | if (typeof ($) !== "function") { |
| | | // no jQuery! |
| | | throw new Error(resources.nojQuery); |
| | | } |
| | | |
| | | var signalR, |
| | | _connection, |
| | | _pageLoaded = (window.document.readyState === "complete"), |
| | | _pageWindow = $(window), |
| | | _negotiateAbortText = "__Negotiate Aborted__", |
| | | events = { |
| | | onStart: "onStart", |
| | | onStarting: "onStarting", |
| | | onReceived: "onReceived", |
| | | onError: "onError", |
| | | onConnectionSlow: "onConnectionSlow", |
| | | onReconnecting: "onReconnecting", |
| | | onReconnect: "onReconnect", |
| | | onStateChanged: "onStateChanged", |
| | | onDisconnect: "onDisconnect" |
| | | }, |
| | | ajaxDefaults = { |
| | | processData: true, |
| | | timeout: null, |
| | | async: true, |
| | | global: false, |
| | | cache: false |
| | | }, |
| | | log = function (msg, logging) { |
| | | if (logging === false) { |
| | | return; |
| | | } |
| | | var m; |
| | | if (typeof (window.console) === "undefined") { |
| | | return; |
| | | } |
| | | m = "[" + new Date().toTimeString() + "] SignalR: " + msg; |
| | | if (window.console.debug) { |
| | | window.console.debug(m); |
| | | } else if (window.console.log) { |
| | | window.console.log(m); |
| | | } |
| | | }, |
| | | |
| | | changeState = function (connection, expectedState, newState) { |
| | | if (expectedState === connection.state) { |
| | | connection.state = newState; |
| | | |
| | | $(connection).triggerHandler(events.onStateChanged, [{ oldState: expectedState, newState: newState }]); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | |
| | | isDisconnecting = function (connection) { |
| | | return connection.state === signalR.connectionState.disconnected; |
| | | }, |
| | | |
| | | supportsKeepAlive = function (connection) { |
| | | return connection._.keepAliveData.activated && |
| | | connection.transport.supportsKeepAlive(connection); |
| | | }, |
| | | |
| | | configureStopReconnectingTimeout = function (connection) { |
| | | var stopReconnectingTimeout, |
| | | onReconnectTimeout; |
| | | |
| | | // Check if this connection has already been configured to stop reconnecting after a specified timeout. |
| | | // Without this check if a connection is stopped then started events will be bound multiple times. |
| | | if (!connection._.configuredStopReconnectingTimeout) { |
| | | onReconnectTimeout = function (connection) { |
| | | var message = signalR._.format(signalR.resources.reconnectTimeout, connection.disconnectTimeout); |
| | | connection.log(message); |
| | | $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ "TimeoutException")]); |
| | | connection.stop(/* async */ false, /* notifyServer */ false); |
| | | }; |
| | | |
| | | connection.reconnecting(function () { |
| | | var connection = this; |
| | | |
| | | // Guard against state changing in a previous user defined even handler |
| | | if (connection.state === signalR.connectionState.reconnecting) { |
| | | stopReconnectingTimeout = window.setTimeout(function () { onReconnectTimeout(connection); }, connection.disconnectTimeout); |
| | | } |
| | | }); |
| | | |
| | | connection.stateChanged(function (data) { |
| | | if (data.oldState === signalR.connectionState.reconnecting) { |
| | | // Clear the pending reconnect timeout check |
| | | window.clearTimeout(stopReconnectingTimeout); |
| | | } |
| | | }); |
| | | |
| | | connection._.configuredStopReconnectingTimeout = true; |
| | | } |
| | | }; |
| | | |
| | | signalR = function (url, qs, logging) { |
| | | /// <summary>Creates a new SignalR connection for the given url</summary> |
| | | /// <param name="url" type="String">The URL of the long polling endpoint</param> |
| | | /// <param name="qs" type="Object"> |
| | | /// [Optional] Custom querystring parameters to add to the connection URL. |
| | | /// If an object, every non-function member will be added to the querystring. |
| | | /// If a string, it's added to the QS as specified. |
| | | /// </param> |
| | | /// <param name="logging" type="Boolean"> |
| | | /// [Optional] A flag indicating whether connection logging is enabled to the browser |
| | | /// console/log. Defaults to false. |
| | | /// </param> |
| | | |
| | | return new signalR.fn.init(url, qs, logging); |
| | | }; |
| | | |
| | | signalR._ = { |
| | | defaultContentType: "application/x-www-form-urlencoded; charset=UTF-8", |
| | | |
| | | ieVersion: (function () { |
| | | var version, |
| | | matches; |
| | | |
| | | if (window.navigator.appName === 'Microsoft Internet Explorer') { |
| | | // Check if the user agent has the pattern "MSIE (one or more numbers).(one or more numbers)"; |
| | | matches = /MSIE ([0-9]+\.[0-9]+)/.exec(window.navigator.userAgent); |
| | | |
| | | if (matches) { |
| | | version = window.parseFloat(matches[1]); |
| | | } |
| | | } |
| | | |
| | | // undefined value means not IE |
| | | return version; |
| | | })(), |
| | | |
| | | error: function (message, source, context) { |
| | | var e = new Error(message); |
| | | e.source = source; |
| | | |
| | | if (typeof context !== "undefined") { |
| | | e.context = context; |
| | | } |
| | | |
| | | return e; |
| | | }, |
| | | |
| | | transportError: function (message, transport, source, context) { |
| | | var e = this.error(message, source, context); |
| | | e.transport = transport ? transport.name : undefined; |
| | | return e; |
| | | }, |
| | | |
| | | format: function () { |
| | | /// <summary>Usage: format("Hi {0}, you are {1}!", "Foo", 100) </summary> |
| | | var s = arguments[0]; |
| | | for (var i = 0; i < arguments.length - 1; i++) { |
| | | s = s.replace("{" + i + "}", arguments[i + 1]); |
| | | } |
| | | return s; |
| | | }, |
| | | |
| | | firefoxMajorVersion: function (userAgent) { |
| | | // Firefox user agents: http://useragentstring.com/pages/Firefox/ |
| | | var matches = userAgent.match(/Firefox\/(\d+)/); |
| | | if (!matches || !matches.length || matches.length < 2) { |
| | | return 0; |
| | | } |
| | | return parseInt(matches[1], 10 /* radix */); |
| | | }, |
| | | |
| | | configurePingInterval: function (connection) { |
| | | var config = connection._.config, |
| | | onFail = function (error) { |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | }; |
| | | |
| | | if (config && !connection._.pingIntervalId && config.pingInterval) { |
| | | connection._.pingIntervalId = window.setInterval(function () { |
| | | signalR.transports._logic.pingServer(connection).fail(onFail); |
| | | }, config.pingInterval); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | signalR.events = events; |
| | | |
| | | signalR.resources = resources; |
| | | |
| | | signalR.ajaxDefaults = ajaxDefaults; |
| | | |
| | | signalR.changeState = changeState; |
| | | |
| | | signalR.isDisconnecting = isDisconnecting; |
| | | |
| | | signalR.connectionState = { |
| | | connecting: 0, |
| | | connected: 1, |
| | | reconnecting: 2, |
| | | disconnected: 4 |
| | | }; |
| | | |
| | | signalR.hub = { |
| | | start: function () { |
| | | // This will get replaced with the real hub connection start method when hubs is referenced correctly |
| | | throw new Error("SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'></script>."); |
| | | } |
| | | }; |
| | | |
| | | // .on() was added in version 1.7.0, .load() was removed in version 3.0.0 so we fallback to .load() if .on() does |
| | | // not exist to not break existing applications |
| | | if (typeof _pageWindow.on == "function") { |
| | | _pageWindow.on("load", function () { _pageLoaded = true; }); |
| | | } |
| | | else { |
| | | _pageWindow.load(function () { _pageLoaded = true; }); |
| | | } |
| | | |
| | | function validateTransport(requestedTransport, connection) { |
| | | /// <summary>Validates the requested transport by cross checking it with the pre-defined signalR.transports</summary> |
| | | /// <param name="requestedTransport" type="Object">The designated transports that the user has specified.</param> |
| | | /// <param name="connection" type="signalR">The connection that will be using the requested transports. Used for logging purposes.</param> |
| | | /// <returns type="Object" /> |
| | | |
| | | if ($.isArray(requestedTransport)) { |
| | | // Go through transport array and remove an "invalid" tranports |
| | | for (var i = requestedTransport.length - 1; i >= 0; i--) { |
| | | var transport = requestedTransport[i]; |
| | | if ($.type(transport) !== "string" || !signalR.transports[transport]) { |
| | | connection.log("Invalid transport: " + transport + ", removing it from the transports list."); |
| | | requestedTransport.splice(i, 1); |
| | | } |
| | | } |
| | | |
| | | // Verify we still have transports left, if we dont then we have invalid transports |
| | | if (requestedTransport.length === 0) { |
| | | connection.log("No transports remain within the specified transport array."); |
| | | requestedTransport = null; |
| | | } |
| | | } else if (!signalR.transports[requestedTransport] && requestedTransport !== "auto") { |
| | | connection.log("Invalid transport: " + requestedTransport.toString() + "."); |
| | | requestedTransport = null; |
| | | } else if (requestedTransport === "auto" && signalR._.ieVersion <= 8) { |
| | | // If we're doing an auto transport and we're IE8 then force longPolling, #1764 |
| | | return ["longPolling"]; |
| | | |
| | | } |
| | | |
| | | return requestedTransport; |
| | | } |
| | | |
| | | function getDefaultPort(protocol) { |
| | | if (protocol === "http:") { |
| | | return 80; |
| | | } else if (protocol === "https:") { |
| | | return 443; |
| | | } |
| | | } |
| | | |
| | | function addDefaultPort(protocol, url) { |
| | | // Remove ports from url. We have to check if there's a / or end of line |
| | | // following the port in order to avoid removing ports such as 8080. |
| | | if (url.match(/:\d+$/)) { |
| | | return url; |
| | | } else { |
| | | return url + ":" + getDefaultPort(protocol); |
| | | } |
| | | } |
| | | |
| | | function ConnectingMessageBuffer(connection, drainCallback) { |
| | | var that = this, |
| | | buffer = []; |
| | | |
| | | that.tryBuffer = function (message) { |
| | | if (connection.state === $.signalR.connectionState.connecting) { |
| | | buffer.push(message); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }; |
| | | |
| | | that.drain = function () { |
| | | // Ensure that the connection is connected when we drain (do not want to drain while a connection is not active) |
| | | if (connection.state === $.signalR.connectionState.connected) { |
| | | while (buffer.length > 0) { |
| | | drainCallback(buffer.shift()); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | that.clear = function () { |
| | | buffer = []; |
| | | }; |
| | | } |
| | | |
| | | signalR.fn = signalR.prototype = { |
| | | init: function (url, qs, logging) { |
| | | var $connection = $(this); |
| | | |
| | | this.url = url; |
| | | this.qs = qs; |
| | | this.lastError = null; |
| | | this._ = { |
| | | keepAliveData: {}, |
| | | connectingMessageBuffer: new ConnectingMessageBuffer(this, function (message) { |
| | | $connection.triggerHandler(events.onReceived, [message]); |
| | | }), |
| | | lastMessageAt: new Date().getTime(), |
| | | lastActiveAt: new Date().getTime(), |
| | | beatInterval: 5000, // Default value, will only be overridden if keep alive is enabled, |
| | | beatHandle: null, |
| | | totalTransportConnectTimeout: 0 // This will be the sum of the TransportConnectTimeout sent in response to negotiate and connection.transportConnectTimeout |
| | | }; |
| | | if (typeof (logging) === "boolean") { |
| | | this.logging = logging; |
| | | } |
| | | }, |
| | | |
| | | _parseResponse: function (response) { |
| | | var that = this; |
| | | |
| | | if (!response) { |
| | | return response; |
| | | } else if (typeof response === "string") { |
| | | return that.json.parse(response); |
| | | } else { |
| | | return response; |
| | | } |
| | | }, |
| | | |
| | | _originalJson: window.JSON, |
| | | |
| | | json: window.JSON, |
| | | |
| | | isCrossDomain: function (url, against) { |
| | | /// <summary>Checks if url is cross domain</summary> |
| | | /// <param name="url" type="String">The base URL</param> |
| | | /// <param name="against" type="Object"> |
| | | /// An optional argument to compare the URL against, if not specified it will be set to window.location. |
| | | /// If specified it must contain a protocol and a host property. |
| | | /// </param> |
| | | var link; |
| | | |
| | | url = $.trim(url); |
| | | |
| | | against = against || window.location; |
| | | |
| | | if (url.indexOf("http") !== 0) { |
| | | return false; |
| | | } |
| | | |
| | | // Create an anchor tag. |
| | | link = window.document.createElement("a"); |
| | | link.href = url; |
| | | |
| | | // When checking for cross domain we have to special case port 80 because the window.location will remove the |
| | | return link.protocol + addDefaultPort(link.protocol, link.host) !== against.protocol + addDefaultPort(against.protocol, against.host); |
| | | }, |
| | | |
| | | ajaxDataType: "text", |
| | | |
| | | contentType: "application/json; charset=UTF-8", |
| | | |
| | | logging: false, |
| | | |
| | | state: signalR.connectionState.disconnected, |
| | | |
| | | clientProtocol: "1.5", |
| | | |
| | | reconnectDelay: 2000, |
| | | |
| | | transportConnectTimeout: 0, |
| | | |
| | | disconnectTimeout: 30000, // This should be set by the server in response to the negotiate request (30s default) |
| | | |
| | | reconnectWindow: 30000, // This should be set by the server in response to the negotiate request |
| | | |
| | | keepAliveWarnAt: 2 / 3, // Warn user of slow connection if we breach the X% mark of the keep alive timeout |
| | | |
| | | start: function (options, callback) { |
| | | /// <summary>Starts the connection</summary> |
| | | /// <param name="options" type="Object">Options map</param> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection has started</param> |
| | | var connection = this, |
| | | config = { |
| | | pingInterval: 300000, |
| | | waitForPageLoad: true, |
| | | transport: "auto", |
| | | jsonp: false |
| | | }, |
| | | initialize, |
| | | deferred = connection._deferral || $.Deferred(), // Check to see if there is a pre-existing deferral that's being built on, if so we want to keep using it |
| | | parser = window.document.createElement("a"); |
| | | |
| | | connection.lastError = null; |
| | | |
| | | // Persist the deferral so that if start is called multiple times the same deferral is used. |
| | | connection._deferral = deferred; |
| | | |
| | | if (!connection.json) { |
| | | // no JSON! |
| | | throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8."); |
| | | } |
| | | |
| | | if ($.type(options) === "function") { |
| | | // Support calling with single callback parameter |
| | | callback = options; |
| | | } else if ($.type(options) === "object") { |
| | | $.extend(config, options); |
| | | if ($.type(config.callback) === "function") { |
| | | callback = config.callback; |
| | | } |
| | | } |
| | | |
| | | config.transport = validateTransport(config.transport, connection); |
| | | |
| | | // If the transport is invalid throw an error and abort start |
| | | if (!config.transport) { |
| | | throw new Error("SignalR: Invalid transport(s) specified, aborting start."); |
| | | } |
| | | |
| | | connection._.config = config; |
| | | |
| | | // Check to see if start is being called prior to page load |
| | | // If waitForPageLoad is true we then want to re-direct function call to the window load event |
| | | if (!_pageLoaded && config.waitForPageLoad === true) { |
| | | connection._.deferredStartHandler = function () { |
| | | connection.start(options, callback); |
| | | }; |
| | | _pageWindow.bind("load", connection._.deferredStartHandler); |
| | | |
| | | return deferred.promise(); |
| | | } |
| | | |
| | | // If we're already connecting just return the same deferral as the original connection start |
| | | if (connection.state === signalR.connectionState.connecting) { |
| | | return deferred.promise(); |
| | | } else if (changeState(connection, |
| | | signalR.connectionState.disconnected, |
| | | signalR.connectionState.connecting) === false) { |
| | | // We're not connecting so try and transition into connecting. |
| | | // If we fail to transition then we're either in connected or reconnecting. |
| | | |
| | | deferred.resolve(connection); |
| | | return deferred.promise(); |
| | | } |
| | | |
| | | configureStopReconnectingTimeout(connection); |
| | | |
| | | // Resolve the full url |
| | | parser.href = connection.url; |
| | | if (!parser.protocol || parser.protocol === ":") { |
| | | connection.protocol = window.document.location.protocol; |
| | | connection.host = parser.host || window.document.location.host; |
| | | } else { |
| | | connection.protocol = parser.protocol; |
| | | connection.host = parser.host; |
| | | } |
| | | |
| | | connection.baseUrl = connection.protocol + "//" + connection.host; |
| | | |
| | | // Set the websocket protocol |
| | | connection.wsProtocol = connection.protocol === "https:" ? "wss://" : "ws://"; |
| | | |
| | | // If jsonp with no/auto transport is specified, then set the transport to long polling |
| | | // since that is the only transport for which jsonp really makes sense. |
| | | // Some developers might actually choose to specify jsonp for same origin requests |
| | | // as demonstrated by Issue #623. |
| | | if (config.transport === "auto" && config.jsonp === true) { |
| | | config.transport = "longPolling"; |
| | | } |
| | | |
| | | // If the url is protocol relative, prepend the current windows protocol to the url. |
| | | if (connection.url.indexOf("//") === 0) { |
| | | connection.url = window.location.protocol + connection.url; |
| | | connection.log("Protocol relative URL detected, normalizing it to '" + connection.url + "'."); |
| | | } |
| | | |
| | | if (this.isCrossDomain(connection.url)) { |
| | | connection.log("Auto detected cross domain url."); |
| | | |
| | | if (config.transport === "auto") { |
| | | // TODO: Support XDM with foreverFrame |
| | | config.transport = ["webSockets", "serverSentEvents", "longPolling"]; |
| | | } |
| | | |
| | | if (typeof (config.withCredentials) === "undefined") { |
| | | config.withCredentials = true; |
| | | } |
| | | |
| | | // Determine if jsonp is the only choice for negotiation, ajaxSend and ajaxAbort. |
| | | // i.e. if the browser doesn't supports CORS |
| | | // If it is, ignore any preference to the contrary, and switch to jsonp. |
| | | if (!config.jsonp) { |
| | | config.jsonp = !$.support.cors; |
| | | |
| | | if (config.jsonp) { |
| | | connection.log("Using jsonp because this browser doesn't support CORS."); |
| | | } |
| | | } |
| | | |
| | | connection.contentType = signalR._.defaultContentType; |
| | | } |
| | | |
| | | connection.withCredentials = config.withCredentials; |
| | | |
| | | connection.ajaxDataType = config.jsonp ? "jsonp" : "text"; |
| | | |
| | | $(connection).bind(events.onStart, function (e, data) { |
| | | if ($.type(callback) === "function") { |
| | | callback.call(connection); |
| | | } |
| | | deferred.resolve(connection); |
| | | }); |
| | | |
| | | connection._.initHandler = signalR.transports._logic.initHandler(connection); |
| | | |
| | | initialize = function (transports, index) { |
| | | var noTransportError = signalR._.error(resources.noTransportOnInit); |
| | | |
| | | index = index || 0; |
| | | if (index >= transports.length) { |
| | | if (index === 0) { |
| | | connection.log("No transports supported by the server were selected."); |
| | | } else if (index === 1) { |
| | | connection.log("No fallback transports were selected."); |
| | | } else { |
| | | connection.log("Fallback transports exhausted."); |
| | | } |
| | | |
| | | // No transport initialized successfully |
| | | $(connection).triggerHandler(events.onError, [noTransportError]); |
| | | deferred.reject(noTransportError); |
| | | // Stop the connection if it has connected and move it into the disconnected state |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | // The connection was aborted |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | return; |
| | | } |
| | | |
| | | var transportName = transports[index], |
| | | transport = signalR.transports[transportName], |
| | | onFallback = function () { |
| | | initialize(transports, index + 1); |
| | | }; |
| | | |
| | | connection.transport = transport; |
| | | |
| | | try { |
| | | connection._.initHandler.start(transport, function () { // success |
| | | // Firefox 11+ doesn't allow sync XHR withCredentials: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials |
| | | var isFirefox11OrGreater = signalR._.firefoxMajorVersion(window.navigator.userAgent) >= 11, |
| | | asyncAbort = !!connection.withCredentials && isFirefox11OrGreater; |
| | | |
| | | connection.log("The start request succeeded. Transitioning to the connected state."); |
| | | |
| | | if (supportsKeepAlive(connection)) { |
| | | signalR.transports._logic.monitorKeepAlive(connection); |
| | | } |
| | | |
| | | signalR.transports._logic.startHeartbeat(connection); |
| | | |
| | | // Used to ensure low activity clients maintain their authentication. |
| | | // Must be configured once a transport has been decided to perform valid ping requests. |
| | | signalR._.configurePingInterval(connection); |
| | | |
| | | if (!changeState(connection, |
| | | signalR.connectionState.connecting, |
| | | signalR.connectionState.connected)) { |
| | | connection.log("WARNING! The connection was not in the connecting state."); |
| | | } |
| | | |
| | | // Drain any incoming buffered messages (messages that came in prior to connect) |
| | | connection._.connectingMessageBuffer.drain(); |
| | | |
| | | $(connection).triggerHandler(events.onStart); |
| | | |
| | | // wire the stop handler for when the user leaves the page |
| | | _pageWindow.bind("unload", function () { |
| | | connection.log("Window unloading, stopping the connection."); |
| | | |
| | | connection.stop(asyncAbort); |
| | | }); |
| | | |
| | | if (isFirefox11OrGreater) { |
| | | // Firefox does not fire cross-domain XHRs in the normal unload handler on tab close. |
| | | // #2400 |
| | | _pageWindow.bind("beforeunload", function () { |
| | | // If connection.stop() runs runs in beforeunload and fails, it will also fail |
| | | // in unload unless connection.stop() runs after a timeout. |
| | | window.setTimeout(function () { |
| | | connection.stop(asyncAbort); |
| | | }, 0); |
| | | }); |
| | | } |
| | | }, onFallback); |
| | | } |
| | | catch (error) { |
| | | connection.log(transport.name + " transport threw '" + error.message + "' when attempting to start."); |
| | | onFallback(); |
| | | } |
| | | }; |
| | | |
| | | var url = connection.url + "/negotiate", |
| | | onFailed = function (error, connection) { |
| | | var err = signalR._.error(resources.errorOnNegotiate, error, connection._.negotiateRequest); |
| | | |
| | | $(connection).triggerHandler(events.onError, err); |
| | | deferred.reject(err); |
| | | // Stop the connection if negotiate failed |
| | | connection.stop(); |
| | | }; |
| | | |
| | | $(connection).triggerHandler(events.onStarting); |
| | | |
| | | url = signalR.transports._logic.prepareQueryString(connection, url); |
| | | |
| | | connection.log("Negotiating with '" + url + "'."); |
| | | |
| | | // Save the ajax negotiate request object so we can abort it if stop is called while the request is in flight. |
| | | connection._.negotiateRequest = signalR.transports._logic.ajax(connection, { |
| | | url: url, |
| | | error: function (error, statusText) { |
| | | // We don't want to cause any errors if we're aborting our own negotiate request. |
| | | if (statusText !== _negotiateAbortText) { |
| | | onFailed(error, connection); |
| | | } else { |
| | | // This rejection will noop if the deferred has already been resolved or rejected. |
| | | deferred.reject(signalR._.error(resources.stoppedWhileNegotiating, null /* error */, connection._.negotiateRequest)); |
| | | } |
| | | }, |
| | | success: function (result) { |
| | | var res, |
| | | keepAliveData, |
| | | protocolError, |
| | | transports = [], |
| | | supportedTransports = []; |
| | | |
| | | try { |
| | | res = connection._parseResponse(result); |
| | | } catch (error) { |
| | | onFailed(signalR._.error(resources.errorParsingNegotiateResponse, error), connection); |
| | | return; |
| | | } |
| | | |
| | | keepAliveData = connection._.keepAliveData; |
| | | connection.appRelativeUrl = res.Url; |
| | | connection.id = res.ConnectionId; |
| | | connection.token = res.ConnectionToken; |
| | | connection.webSocketServerUrl = res.WebSocketServerUrl; |
| | | |
| | | // The long poll timeout is the ConnectionTimeout plus 10 seconds |
| | | connection._.pollTimeout = res.ConnectionTimeout * 1000 + 10000; // in ms |
| | | |
| | | // Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect |
| | | // after res.DisconnectTimeout seconds. |
| | | connection.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms |
| | | |
| | | // Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout |
| | | connection._.totalTransportConnectTimeout = connection.transportConnectTimeout + res.TransportConnectTimeout * 1000; |
| | | |
| | | // If we have a keep alive |
| | | if (res.KeepAliveTimeout) { |
| | | // Register the keep alive data as activated |
| | | keepAliveData.activated = true; |
| | | |
| | | // Timeout to designate when to force the connection into reconnecting converted to milliseconds |
| | | keepAliveData.timeout = res.KeepAliveTimeout * 1000; |
| | | |
| | | // Timeout to designate when to warn the developer that the connection may be dead or is not responding. |
| | | keepAliveData.timeoutWarning = keepAliveData.timeout * connection.keepAliveWarnAt; |
| | | |
| | | // Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes |
| | | connection._.beatInterval = (keepAliveData.timeout - keepAliveData.timeoutWarning) / 3; |
| | | } else { |
| | | keepAliveData.activated = false; |
| | | } |
| | | |
| | | connection.reconnectWindow = connection.disconnectTimeout + (keepAliveData.timeout || 0); |
| | | |
| | | if (!res.ProtocolVersion || res.ProtocolVersion !== connection.clientProtocol) { |
| | | protocolError = signalR._.error(signalR._.format(resources.protocolIncompatible, connection.clientProtocol, res.ProtocolVersion)); |
| | | $(connection).triggerHandler(events.onError, [protocolError]); |
| | | deferred.reject(protocolError); |
| | | |
| | | return; |
| | | } |
| | | |
| | | $.each(signalR.transports, function (key) { |
| | | if ((key.indexOf("_") === 0) || (key === "webSockets" && !res.TryWebSockets)) { |
| | | return true; |
| | | } |
| | | supportedTransports.push(key); |
| | | }); |
| | | |
| | | if ($.isArray(config.transport)) { |
| | | $.each(config.transport, function (_, transport) { |
| | | if ($.inArray(transport, supportedTransports) >= 0) { |
| | | transports.push(transport); |
| | | } |
| | | }); |
| | | } else if (config.transport === "auto") { |
| | | transports = supportedTransports; |
| | | } else if ($.inArray(config.transport, supportedTransports) >= 0) { |
| | | transports.push(config.transport); |
| | | } |
| | | |
| | | initialize(transports); |
| | | } |
| | | }); |
| | | |
| | | return deferred.promise(); |
| | | }, |
| | | |
| | | starting: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked before anything is sent over the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute before the connection is fully instantiated.</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onStarting, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | send: function (data) { |
| | | /// <summary>Sends data over the connection</summary> |
| | | /// <param name="data" type="String">The data to send over the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | // Connection hasn't been started yet |
| | | throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()"); |
| | | } |
| | | |
| | | if (connection.state === signalR.connectionState.connecting) { |
| | | // Connection hasn't been started yet |
| | | throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started."); |
| | | } |
| | | |
| | | connection.transport.send(connection, data); |
| | | // REVIEW: Should we return deferred here? |
| | | return connection; |
| | | }, |
| | | |
| | | received: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked after anything is received over the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when any data is received on the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReceived, function (e, data) { |
| | | callback.call(connection, data); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | stateChanged: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the connection state changes</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection state changes</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onStateChanged, function (e, data) { |
| | | callback.call(connection, data); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | error: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked after an error occurs with the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when an error occurs on the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onError, function (e, errorData, sendData) { |
| | | connection.lastError = errorData; |
| | | // In practice 'errorData' is the SignalR built error object. |
| | | // In practice 'sendData' is undefined for all error events except those triggered by |
| | | // 'ajaxSend' and 'webSockets.send'.'sendData' is the original send payload. |
| | | callback.call(connection, errorData, sendData); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | disconnected: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the client disconnects</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is broken</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onDisconnect, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | connectionSlow: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the client detects a slow connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is slow</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onConnectionSlow, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | |
| | | return connection; |
| | | }, |
| | | |
| | | reconnecting: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the underlying transport begins reconnecting</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection enters a reconnecting state</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReconnecting, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | reconnected: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the underlying transport reconnects</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is restored</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReconnect, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | stop: function (async, notifyServer) { |
| | | /// <summary>Stops listening</summary> |
| | | /// <param name="async" type="Boolean">Whether or not to asynchronously abort the connection</param> |
| | | /// <param name="notifyServer" type="Boolean">Whether we want to notify the server that we are aborting the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this, |
| | | // Save deferral because this is always cleaned up |
| | | deferral = connection._deferral; |
| | | |
| | | // Verify that we've bound a load event. |
| | | if (connection._.deferredStartHandler) { |
| | | // Unbind the event. |
| | | _pageWindow.unbind("load", connection._.deferredStartHandler); |
| | | } |
| | | |
| | | // Always clean up private non-timeout based state. |
| | | delete connection._.config; |
| | | delete connection._.deferredStartHandler; |
| | | |
| | | // This needs to be checked despite the connection state because a connection start can be deferred until page load. |
| | | // If we've deferred the start due to a page load we need to unbind the "onLoad" -> start event. |
| | | if (!_pageLoaded && (!connection._.config || connection._.config.waitForPageLoad === true)) { |
| | | connection.log("Stopping connection prior to negotiate."); |
| | | |
| | | // If we have a deferral we should reject it |
| | | if (deferral) { |
| | | deferral.reject(signalR._.error(resources.stoppedWhileLoading)); |
| | | } |
| | | |
| | | // Short-circuit because the start has not been fully started. |
| | | return; |
| | | } |
| | | |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("Stopping connection."); |
| | | |
| | | // Clear this no matter what |
| | | window.clearTimeout(connection._.beatHandle); |
| | | window.clearInterval(connection._.pingIntervalId); |
| | | |
| | | if (connection.transport) { |
| | | connection.transport.stop(connection); |
| | | |
| | | if (notifyServer !== false) { |
| | | connection.transport.abort(connection, async); |
| | | } |
| | | |
| | | if (supportsKeepAlive(connection)) { |
| | | signalR.transports._logic.stopMonitoringKeepAlive(connection); |
| | | } |
| | | |
| | | connection.transport = null; |
| | | } |
| | | |
| | | if (connection._.negotiateRequest) { |
| | | // If the negotiation request has already completed this will noop. |
| | | connection._.negotiateRequest.abort(_negotiateAbortText); |
| | | delete connection._.negotiateRequest; |
| | | } |
| | | |
| | | // Ensure that initHandler.stop() is called before connection._deferral is deleted |
| | | if (connection._.initHandler) { |
| | | connection._.initHandler.stop(); |
| | | } |
| | | |
| | | delete connection._deferral; |
| | | delete connection.messageId; |
| | | delete connection.groupsToken; |
| | | delete connection.id; |
| | | delete connection._.pingIntervalId; |
| | | delete connection._.lastMessageAt; |
| | | delete connection._.lastActiveAt; |
| | | |
| | | // Clear out our message buffer |
| | | connection._.connectingMessageBuffer.clear(); |
| | | |
| | | // Clean up this event |
| | | $(connection).unbind(events.onStart); |
| | | |
| | | // Trigger the disconnect event |
| | | changeState(connection, connection.state, signalR.connectionState.disconnected); |
| | | $(connection).triggerHandler(events.onDisconnect); |
| | | |
| | | return connection; |
| | | }, |
| | | |
| | | log: function (msg) { |
| | | log(msg, this.logging); |
| | | } |
| | | }; |
| | | |
| | | signalR.fn.init.prototype = signalR.fn; |
| | | |
| | | signalR.noConflict = function () { |
| | | /// <summary>Reinstates the original value of $.connection and returns the signalR object for manual assignment</summary> |
| | | /// <returns type="signalR" /> |
| | | if ($.connection === signalR) { |
| | | $.connection = _connection; |
| | | } |
| | | return signalR; |
| | | }; |
| | | |
| | | if ($.connection) { |
| | | _connection = $.connection; |
| | | } |
| | | |
| | | $.connection = $.signalR = signalR; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.common.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | startAbortText = "__Start Aborted__", |
| | | transportLogic; |
| | | |
| | | signalR.transports = {}; |
| | | |
| | | function beat(connection) { |
| | | if (connection._.keepAliveData.monitoring) { |
| | | checkIfAlive(connection); |
| | | } |
| | | |
| | | // Ensure that we successfully marked active before continuing the heartbeat. |
| | | if (transportLogic.markActive(connection)) { |
| | | connection._.beatHandle = window.setTimeout(function () { |
| | | beat(connection); |
| | | }, connection._.beatInterval); |
| | | } |
| | | } |
| | | |
| | | function checkIfAlive(connection) { |
| | | var keepAliveData = connection._.keepAliveData, |
| | | timeElapsed; |
| | | |
| | | // Only check if we're connected |
| | | if (connection.state === signalR.connectionState.connected) { |
| | | timeElapsed = new Date().getTime() - connection._.lastMessageAt; |
| | | |
| | | // Check if the keep alive has completely timed out |
| | | if (timeElapsed >= keepAliveData.timeout) { |
| | | connection.log("Keep alive timed out. Notifying transport that connection has been lost."); |
| | | |
| | | // Notify transport that the connection has been lost |
| | | connection.transport.lostConnection(connection); |
| | | } else if (timeElapsed >= keepAliveData.timeoutWarning) { |
| | | // This is to assure that the user only gets a single warning |
| | | if (!keepAliveData.userNotified) { |
| | | connection.log("Keep alive has been missed, connection may be dead/slow."); |
| | | $(connection).triggerHandler(events.onConnectionSlow); |
| | | keepAliveData.userNotified = true; |
| | | } |
| | | } else { |
| | | keepAliveData.userNotified = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | function getAjaxUrl(connection, path) { |
| | | var url = connection.url + path; |
| | | |
| | | if (connection.transport) { |
| | | url += "?transport=" + connection.transport.name; |
| | | } |
| | | |
| | | return transportLogic.prepareQueryString(connection, url); |
| | | } |
| | | |
| | | function InitHandler(connection) { |
| | | this.connection = connection; |
| | | |
| | | this.startRequested = false; |
| | | this.startCompleted = false; |
| | | this.connectionStopped = false; |
| | | } |
| | | |
| | | InitHandler.prototype = { |
| | | start: function (transport, onSuccess, onFallback) { |
| | | var that = this, |
| | | connection = that.connection, |
| | | failCalled = false; |
| | | |
| | | if (that.startRequested || that.connectionStopped) { |
| | | connection.log("WARNING! " + transport.name + " transport cannot be started. Initialization ongoing or completed."); |
| | | return; |
| | | } |
| | | |
| | | connection.log(transport.name + " transport starting."); |
| | | |
| | | transport.start(connection, function () { |
| | | if (!failCalled) { |
| | | that.initReceived(transport, onSuccess); |
| | | } |
| | | }, function (error) { |
| | | // Don't allow the same transport to cause onFallback to be called twice |
| | | if (!failCalled) { |
| | | failCalled = true; |
| | | that.transportFailed(transport, error, onFallback); |
| | | } |
| | | |
| | | // Returns true if the transport should stop; |
| | | // false if it should attempt to reconnect |
| | | return !that.startCompleted || that.connectionStopped; |
| | | }); |
| | | |
| | | that.transportTimeoutHandle = window.setTimeout(function () { |
| | | if (!failCalled) { |
| | | failCalled = true; |
| | | connection.log(transport.name + " transport timed out when trying to connect."); |
| | | that.transportFailed(transport, undefined, onFallback); |
| | | } |
| | | }, connection._.totalTransportConnectTimeout); |
| | | }, |
| | | |
| | | stop: function () { |
| | | this.connectionStopped = true; |
| | | window.clearTimeout(this.transportTimeoutHandle); |
| | | signalR.transports._logic.tryAbortStartRequest(this.connection); |
| | | }, |
| | | |
| | | initReceived: function (transport, onSuccess) { |
| | | var that = this, |
| | | connection = that.connection; |
| | | |
| | | if (that.startRequested) { |
| | | connection.log("WARNING! The client received multiple init messages."); |
| | | return; |
| | | } |
| | | |
| | | if (that.connectionStopped) { |
| | | return; |
| | | } |
| | | |
| | | that.startRequested = true; |
| | | window.clearTimeout(that.transportTimeoutHandle); |
| | | |
| | | connection.log(transport.name + " transport connected. Initiating start request."); |
| | | signalR.transports._logic.ajaxStart(connection, function () { |
| | | that.startCompleted = true; |
| | | onSuccess(); |
| | | }); |
| | | }, |
| | | |
| | | transportFailed: function (transport, error, onFallback) { |
| | | var connection = this.connection, |
| | | deferred = connection._deferral, |
| | | wrappedError; |
| | | |
| | | if (this.connectionStopped) { |
| | | return; |
| | | } |
| | | |
| | | window.clearTimeout(this.transportTimeoutHandle); |
| | | |
| | | if (!this.startRequested) { |
| | | transport.stop(connection); |
| | | |
| | | connection.log(transport.name + " transport failed to connect. Attempting to fall back."); |
| | | onFallback(); |
| | | } else if (!this.startCompleted) { |
| | | // Do not attempt to fall back if a start request is ongoing during a transport failure. |
| | | // Instead, trigger an error and stop the connection. |
| | | wrappedError = signalR._.error(signalR.resources.errorDuringStartRequest, error); |
| | | |
| | | connection.log(transport.name + " transport failed during the start request. Stopping the connection."); |
| | | $(connection).triggerHandler(events.onError, [wrappedError]); |
| | | if (deferred) { |
| | | deferred.reject(wrappedError); |
| | | } |
| | | |
| | | connection.stop(); |
| | | } else { |
| | | // The start request has completed, but the connection has not stopped. |
| | | // No need to do anything here. The transport should attempt its normal reconnect logic. |
| | | } |
| | | } |
| | | }; |
| | | |
| | | transportLogic = signalR.transports._logic = { |
| | | ajax: function (connection, options) { |
| | | return $.ajax( |
| | | $.extend(/*deep copy*/ true, {}, $.signalR.ajaxDefaults, { |
| | | type: "GET", |
| | | data: {}, |
| | | xhrFields: { withCredentials: connection.withCredentials }, |
| | | contentType: connection.contentType, |
| | | dataType: connection.ajaxDataType |
| | | }, options)); |
| | | }, |
| | | |
| | | pingServer: function (connection) { |
| | | /// <summary>Pings the server</summary> |
| | | /// <param name="connection" type="signalr">Connection associated with the server ping</param> |
| | | /// <returns type="signalR" /> |
| | | var url, |
| | | xhr, |
| | | deferral = $.Deferred(); |
| | | |
| | | if (connection.transport) { |
| | | url = connection.url + "/ping"; |
| | | |
| | | url = transportLogic.addQs(url, connection.qs); |
| | | |
| | | xhr = transportLogic.ajax(connection, { |
| | | url: url, |
| | | success: function (result) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.pingServerFailedParse, |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | if (data.Response === "pong") { |
| | | deferral.resolve(); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR._.format(signalR.resources.pingServerFailedInvalidResponse, result), |
| | | connection.transport, |
| | | null /* error */, |
| | | xhr |
| | | ) |
| | | ); |
| | | } |
| | | }, |
| | | error: function (error) { |
| | | if (error.status === 401 || error.status === 403) { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR._.format(signalR.resources.pingServerFailedStatusCode, error.status), |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | connection.stop(); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.pingServerFailed, |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.noConnectionTransport, |
| | | connection.transport |
| | | ) |
| | | ); |
| | | } |
| | | |
| | | return deferral.promise(); |
| | | }, |
| | | |
| | | prepareQueryString: function (connection, url) { |
| | | var preparedUrl; |
| | | |
| | | // Use addQs to start since it handles the ?/& prefix for us |
| | | preparedUrl = transportLogic.addQs(url, "clientProtocol=" + connection.clientProtocol); |
| | | |
| | | // Add the user-specified query string params if any |
| | | preparedUrl = transportLogic.addQs(preparedUrl, connection.qs); |
| | | |
| | | if (connection.token) { |
| | | preparedUrl += "&connectionToken=" + window.encodeURIComponent(connection.token); |
| | | } |
| | | |
| | | if (connection.data) { |
| | | preparedUrl += "&connectionData=" + window.encodeURIComponent(connection.data); |
| | | } |
| | | |
| | | return preparedUrl; |
| | | }, |
| | | |
| | | addQs: function (url, qs) { |
| | | var appender = url.indexOf("?") !== -1 ? "&" : "?", |
| | | firstChar; |
| | | |
| | | if (!qs) { |
| | | return url; |
| | | } |
| | | |
| | | if (typeof (qs) === "object") { |
| | | return url + appender + $.param(qs); |
| | | } |
| | | |
| | | if (typeof (qs) === "string") { |
| | | firstChar = qs.charAt(0); |
| | | |
| | | if (firstChar === "?" || firstChar === "&") { |
| | | appender = ""; |
| | | } |
| | | |
| | | return url + appender + qs; |
| | | } |
| | | |
| | | throw new Error("Query string property must be either a string or object."); |
| | | }, |
| | | |
| | | // BUG #2953: The url needs to be same otherwise it will cause a memory leak |
| | | getUrl: function (connection, transport, reconnecting, poll, ajaxPost) { |
| | | /// <summary>Gets the url for making a GET based connect request</summary> |
| | | var baseUrl = transport === "webSockets" ? "" : connection.baseUrl, |
| | | url = baseUrl + connection.appRelativeUrl, |
| | | qs = "transport=" + transport; |
| | | |
| | | if (!ajaxPost && connection.groupsToken) { |
| | | qs += "&groupsToken=" + window.encodeURIComponent(connection.groupsToken); |
| | | } |
| | | |
| | | if (!reconnecting) { |
| | | url += "/connect"; |
| | | } else { |
| | | if (poll) { |
| | | // longPolling transport specific |
| | | url += "/poll"; |
| | | } else { |
| | | url += "/reconnect"; |
| | | } |
| | | |
| | | if (!ajaxPost && connection.messageId) { |
| | | qs += "&messageId=" + window.encodeURIComponent(connection.messageId); |
| | | } |
| | | } |
| | | url += "?" + qs; |
| | | url = transportLogic.prepareQueryString(connection, url); |
| | | |
| | | if (!ajaxPost) { |
| | | url += "&tid=" + Math.floor(Math.random() * 11); |
| | | } |
| | | |
| | | return url; |
| | | }, |
| | | |
| | | maximizePersistentResponse: function (minPersistentResponse) { |
| | | return { |
| | | MessageId: minPersistentResponse.C, |
| | | Messages: minPersistentResponse.M, |
| | | Initialized: typeof (minPersistentResponse.S) !== "undefined" ? true : false, |
| | | ShouldReconnect: typeof (minPersistentResponse.T) !== "undefined" ? true : false, |
| | | LongPollDelay: minPersistentResponse.L, |
| | | GroupsToken: minPersistentResponse.G |
| | | }; |
| | | }, |
| | | |
| | | updateGroups: function (connection, groupsToken) { |
| | | if (groupsToken) { |
| | | connection.groupsToken = groupsToken; |
| | | } |
| | | }, |
| | | |
| | | stringifySend: function (connection, message) { |
| | | if (typeof (message) === "string" || typeof (message) === "undefined" || message === null) { |
| | | return message; |
| | | } |
| | | return connection.json.stringify(message); |
| | | }, |
| | | |
| | | ajaxSend: function (connection, data) { |
| | | var payload = transportLogic.stringifySend(connection, data), |
| | | url = getAjaxUrl(connection, "/send"), |
| | | xhr, |
| | | onFail = function (error, connection) { |
| | | $(connection).triggerHandler(events.onError, [signalR._.transportError(signalR.resources.sendFailed, connection.transport, error, xhr), data]); |
| | | }; |
| | | |
| | | |
| | | xhr = transportLogic.ajax(connection, { |
| | | url: url, |
| | | type: connection.ajaxDataType === "jsonp" ? "GET" : "POST", |
| | | contentType: signalR._.defaultContentType, |
| | | data: { |
| | | data: payload |
| | | }, |
| | | success: function (result) { |
| | | var res; |
| | | |
| | | if (result) { |
| | | try { |
| | | res = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | onFail(error, connection); |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | transportLogic.triggerReceived(connection, res); |
| | | } |
| | | }, |
| | | error: function (error, textStatus) { |
| | | if (textStatus === "abort" || textStatus === "parsererror") { |
| | | // The parsererror happens for sends that don't return any data, and hence |
| | | // don't write the jsonp callback to the response. This is harder to fix on the server |
| | | // so just hack around it on the client for now. |
| | | return; |
| | | } |
| | | |
| | | onFail(error, connection); |
| | | } |
| | | }); |
| | | |
| | | return xhr; |
| | | }, |
| | | |
| | | ajaxAbort: function (connection, async) { |
| | | if (typeof (connection.transport) === "undefined") { |
| | | return; |
| | | } |
| | | |
| | | // Async by default unless explicitly overidden |
| | | async = typeof async === "undefined" ? true : async; |
| | | |
| | | var url = getAjaxUrl(connection, "/abort"); |
| | | |
| | | transportLogic.ajax(connection, { |
| | | url: url, |
| | | async: async, |
| | | timeout: 1000, |
| | | type: "POST" |
| | | }); |
| | | |
| | | connection.log("Fired ajax abort async = " + async + "."); |
| | | }, |
| | | |
| | | ajaxStart: function (connection, onSuccess) { |
| | | var rejectDeferred = function (error) { |
| | | var deferred = connection._deferral; |
| | | if (deferred) { |
| | | deferred.reject(error); |
| | | } |
| | | }, |
| | | triggerStartError = function (error) { |
| | | connection.log("The start request failed. Stopping the connection."); |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | rejectDeferred(error); |
| | | connection.stop(); |
| | | }; |
| | | |
| | | connection._.startRequest = transportLogic.ajax(connection, { |
| | | url: getAjaxUrl(connection, "/start"), |
| | | success: function (result, statusText, xhr) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(result); |
| | | } catch (error) { |
| | | triggerStartError(signalR._.error( |
| | | signalR._.format(signalR.resources.errorParsingStartResponse, result), |
| | | error, xhr)); |
| | | return; |
| | | } |
| | | |
| | | if (data.Response === "started") { |
| | | onSuccess(); |
| | | } else { |
| | | triggerStartError(signalR._.error( |
| | | signalR._.format(signalR.resources.invalidStartResponse, result), |
| | | null /* error */, xhr)); |
| | | } |
| | | }, |
| | | error: function (xhr, statusText, error) { |
| | | if (statusText !== startAbortText) { |
| | | triggerStartError(signalR._.error( |
| | | signalR.resources.errorDuringStartRequest, |
| | | error, xhr)); |
| | | } else { |
| | | // Stop has been called, no need to trigger the error handler |
| | | // or stop the connection again with onStartError |
| | | connection.log("The start request aborted because connection.stop() was called."); |
| | | rejectDeferred(signalR._.error( |
| | | signalR.resources.stoppedDuringStartRequest, |
| | | null /* error */, xhr)); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | tryAbortStartRequest: function (connection) { |
| | | if (connection._.startRequest) { |
| | | // If the start request has already completed this will noop. |
| | | connection._.startRequest.abort(startAbortText); |
| | | delete connection._.startRequest; |
| | | } |
| | | }, |
| | | |
| | | tryInitialize: function (connection, persistentResponse, onInitialized) { |
| | | if (persistentResponse.Initialized && onInitialized) { |
| | | onInitialized(); |
| | | } else if (persistentResponse.Initialized) { |
| | | connection.log("WARNING! The client received an init message after reconnecting."); |
| | | } |
| | | |
| | | }, |
| | | |
| | | triggerReceived: function (connection, data) { |
| | | if (!connection._.connectingMessageBuffer.tryBuffer(data)) { |
| | | $(connection).triggerHandler(events.onReceived, [data]); |
| | | } |
| | | }, |
| | | |
| | | processMessages: function (connection, minData, onInitialized) { |
| | | var data; |
| | | |
| | | // Update the last message time stamp |
| | | transportLogic.markLastMessage(connection); |
| | | |
| | | if (minData) { |
| | | data = transportLogic.maximizePersistentResponse(minData); |
| | | |
| | | transportLogic.updateGroups(connection, data.GroupsToken); |
| | | |
| | | if (data.MessageId) { |
| | | connection.messageId = data.MessageId; |
| | | } |
| | | |
| | | if (data.Messages) { |
| | | $.each(data.Messages, function (index, message) { |
| | | transportLogic.triggerReceived(connection, message); |
| | | }); |
| | | |
| | | transportLogic.tryInitialize(connection, data, onInitialized); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | monitorKeepAlive: function (connection) { |
| | | var keepAliveData = connection._.keepAliveData; |
| | | |
| | | // If we haven't initiated the keep alive timeouts then we need to |
| | | if (!keepAliveData.monitoring) { |
| | | keepAliveData.monitoring = true; |
| | | |
| | | transportLogic.markLastMessage(connection); |
| | | |
| | | // Save the function so we can unbind it on stop |
| | | connection._.keepAliveData.reconnectKeepAliveUpdate = function () { |
| | | // Mark a new message so that keep alive doesn't time out connections |
| | | transportLogic.markLastMessage(connection); |
| | | }; |
| | | |
| | | // Update Keep alive on reconnect |
| | | $(connection).bind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate); |
| | | |
| | | connection.log("Now monitoring keep alive with a warning timeout of " + keepAliveData.timeoutWarning + ", keep alive timeout of " + keepAliveData.timeout + " and disconnecting timeout of " + connection.disconnectTimeout); |
| | | } else { |
| | | connection.log("Tried to monitor keep alive but it's already being monitored."); |
| | | } |
| | | }, |
| | | |
| | | stopMonitoringKeepAlive: function (connection) { |
| | | var keepAliveData = connection._.keepAliveData; |
| | | |
| | | // Only attempt to stop the keep alive monitoring if its being monitored |
| | | if (keepAliveData.monitoring) { |
| | | // Stop monitoring |
| | | keepAliveData.monitoring = false; |
| | | |
| | | // Remove the updateKeepAlive function from the reconnect event |
| | | $(connection).unbind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate); |
| | | |
| | | // Clear all the keep alive data |
| | | connection._.keepAliveData = {}; |
| | | connection.log("Stopping the monitoring of the keep alive."); |
| | | } |
| | | }, |
| | | |
| | | startHeartbeat: function (connection) { |
| | | connection._.lastActiveAt = new Date().getTime(); |
| | | beat(connection); |
| | | }, |
| | | |
| | | markLastMessage: function (connection) { |
| | | connection._.lastMessageAt = new Date().getTime(); |
| | | }, |
| | | |
| | | markActive: function (connection) { |
| | | if (transportLogic.verifyLastActive(connection)) { |
| | | connection._.lastActiveAt = new Date().getTime(); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | |
| | | isConnectedOrReconnecting: function (connection) { |
| | | return connection.state === signalR.connectionState.connected || |
| | | connection.state === signalR.connectionState.reconnecting; |
| | | }, |
| | | |
| | | ensureReconnectingState: function (connection) { |
| | | if (changeState(connection, |
| | | signalR.connectionState.connected, |
| | | signalR.connectionState.reconnecting) === true) { |
| | | $(connection).triggerHandler(events.onReconnecting); |
| | | } |
| | | return connection.state === signalR.connectionState.reconnecting; |
| | | }, |
| | | |
| | | clearReconnectTimeout: function (connection) { |
| | | if (connection && connection._.reconnectTimeout) { |
| | | window.clearTimeout(connection._.reconnectTimeout); |
| | | delete connection._.reconnectTimeout; |
| | | } |
| | | }, |
| | | |
| | | verifyLastActive: function (connection) { |
| | | if (new Date().getTime() - connection._.lastActiveAt >= connection.reconnectWindow) { |
| | | var message = signalR._.format(signalR.resources.reconnectWindowTimeout, new Date(connection._.lastActiveAt), connection.reconnectWindow); |
| | | connection.log(message); |
| | | $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ "TimeoutException")]); |
| | | connection.stop(/* async */ false, /* notifyServer */ false); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | }, |
| | | |
| | | reconnect: function (connection, transportName) { |
| | | var transport = signalR.transports[transportName]; |
| | | |
| | | // We should only set a reconnectTimeout if we are currently connected |
| | | // and a reconnectTimeout isn't already set. |
| | | if (transportLogic.isConnectedOrReconnecting(connection) && !connection._.reconnectTimeout) { |
| | | // Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration. |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | connection._.reconnectTimeout = window.setTimeout(function () { |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | transport.stop(connection); |
| | | |
| | | if (transportLogic.ensureReconnectingState(connection)) { |
| | | connection.log(transportName + " reconnecting."); |
| | | transport.start(connection); |
| | | } |
| | | }, connection.reconnectDelay); |
| | | } |
| | | }, |
| | | |
| | | handleParseFailure: function (connection, result, error, onFailed, context) { |
| | | var wrappedError = signalR._.transportError( |
| | | signalR._.format(signalR.resources.parseFailed, result), |
| | | connection.transport, |
| | | error, |
| | | context); |
| | | |
| | | // If we're in the initialization phase trigger onFailed, otherwise stop the connection. |
| | | if (onFailed && onFailed(wrappedError)) { |
| | | connection.log("Failed to parse server response while attempting to connect."); |
| | | } else { |
| | | $(connection).triggerHandler(events.onError, [wrappedError]); |
| | | connection.stop(); |
| | | } |
| | | }, |
| | | |
| | | initHandler: function (connection) { |
| | | return new InitHandler(connection); |
| | | }, |
| | | |
| | | foreverFrame: { |
| | | count: 0, |
| | | connections: {} |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.webSockets.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic; |
| | | |
| | | signalR.transports.webSockets = { |
| | | name: "webSockets", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | var payload = transportLogic.stringifySend(connection, data); |
| | | |
| | | try { |
| | | connection.socket.send(payload); |
| | | } catch (ex) { |
| | | $(connection).triggerHandler(events.onError, |
| | | [signalR._.transportError( |
| | | signalR.resources.webSocketsInvalidState, |
| | | connection.transport, |
| | | ex, |
| | | connection.socket |
| | | ), |
| | | data]); |
| | | } |
| | | }, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var url, |
| | | opened = false, |
| | | that = this, |
| | | reconnecting = !onSuccess, |
| | | $connection = $(connection); |
| | | |
| | | if (!window.WebSocket) { |
| | | onFailed(); |
| | | return; |
| | | } |
| | | |
| | | if (!connection.socket) { |
| | | if (connection.webSocketServerUrl) { |
| | | url = connection.webSocketServerUrl; |
| | | } else { |
| | | url = connection.wsProtocol + connection.host; |
| | | } |
| | | |
| | | url += transportLogic.getUrl(connection, this.name, reconnecting); |
| | | |
| | | connection.log("Connecting to websocket endpoint '" + url + "'."); |
| | | connection.socket = new window.WebSocket(url); |
| | | |
| | | connection.socket.onopen = function () { |
| | | opened = true; |
| | | connection.log("Websocket opened."); |
| | | |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | $connection.triggerHandler(events.onReconnect); |
| | | } |
| | | }; |
| | | |
| | | connection.socket.onclose = function (event) { |
| | | var error; |
| | | |
| | | // Only handle a socket close if the close is from the current socket. |
| | | // Sometimes on disconnect the server will push down an onclose event |
| | | // to an expired socket. |
| | | |
| | | if (this === connection.socket) { |
| | | if (opened && typeof event.wasClean !== "undefined" && event.wasClean === false) { |
| | | // Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but |
| | | // I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers. |
| | | error = signalR._.transportError( |
| | | signalR.resources.webSocketClosed, |
| | | connection.transport, |
| | | event); |
| | | |
| | | connection.log("Unclean disconnect from websocket: " + (event.reason || "[no reason given].")); |
| | | } else { |
| | | connection.log("Websocket closed."); |
| | | } |
| | | |
| | | if (!onFailed || !onFailed(error)) { |
| | | if (error) { |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | } |
| | | |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | connection.socket.onmessage = function (event) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(event.data); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(connection, event.data, error, onFailed, event); |
| | | return; |
| | | } |
| | | |
| | | if (data) { |
| | | // data.M is PersistentResponse.Messages |
| | | if ($.isEmptyObject(data) || data.M) { |
| | | transportLogic.processMessages(connection, data, onSuccess); |
| | | } else { |
| | | // For websockets we need to trigger onReceived |
| | | // for callbacks to outgoing hub calls. |
| | | transportLogic.triggerReceived(connection, data); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | transportLogic.reconnect(connection, this.name); |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | // Don't trigger a reconnect after stopping |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (connection.socket) { |
| | | connection.log("Closing the Websocket."); |
| | | connection.socket.close(); |
| | | connection.socket = null; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.serverSentEvents.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic, |
| | | clearReconnectAttemptTimeout = function (connection) { |
| | | window.clearTimeout(connection._.reconnectAttemptTimeoutHandle); |
| | | delete connection._.reconnectAttemptTimeoutHandle; |
| | | }; |
| | | |
| | | signalR.transports.serverSentEvents = { |
| | | name: "serverSentEvents", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | timeOut: 3000, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var that = this, |
| | | opened = false, |
| | | $connection = $(connection), |
| | | reconnecting = !onSuccess, |
| | | url; |
| | | |
| | | if (connection.eventSource) { |
| | | connection.log("The connection already has an event source. Stopping it."); |
| | | connection.stop(); |
| | | } |
| | | |
| | | if (!window.EventSource) { |
| | | if (onFailed) { |
| | | connection.log("This browser doesn't support SSE."); |
| | | onFailed(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | url = transportLogic.getUrl(connection, this.name, reconnecting); |
| | | |
| | | try { |
| | | connection.log("Attempting to connect to SSE endpoint '" + url + "'."); |
| | | connection.eventSource = new window.EventSource(url, { withCredentials: connection.withCredentials }); |
| | | } |
| | | catch (e) { |
| | | connection.log("EventSource failed trying to connect with error " + e.Message + "."); |
| | | if (onFailed) { |
| | | // The connection failed, call the failed callback |
| | | onFailed(); |
| | | } else { |
| | | $connection.triggerHandler(events.onError, [signalR._.transportError(signalR.resources.eventSourceFailedToConnect, connection.transport, e)]); |
| | | if (reconnecting) { |
| | | // If we were reconnecting, rather than doing initial connect, then try reconnect again |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | |
| | | if (reconnecting) { |
| | | connection._.reconnectAttemptTimeoutHandle = window.setTimeout(function () { |
| | | if (opened === false) { |
| | | // If we're reconnecting and the event source is attempting to connect, |
| | | // don't keep retrying. This causes duplicate connections to spawn. |
| | | if (connection.eventSource.readyState !== window.EventSource.OPEN) { |
| | | // If we were reconnecting, rather than doing initial connect, then try reconnect again |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | }, |
| | | that.timeOut); |
| | | } |
| | | |
| | | connection.eventSource.addEventListener("open", function (e) { |
| | | connection.log("EventSource connected."); |
| | | |
| | | clearReconnectAttemptTimeout(connection); |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (opened === false) { |
| | | opened = true; |
| | | |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | $connection.triggerHandler(events.onReconnect); |
| | | } |
| | | } |
| | | }, false); |
| | | |
| | | connection.eventSource.addEventListener("message", function (e) { |
| | | var res; |
| | | |
| | | // process messages |
| | | if (e.data === "initialized") { |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | res = connection._parseResponse(e.data); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(connection, e.data, error, onFailed, e); |
| | | return; |
| | | } |
| | | |
| | | transportLogic.processMessages(connection, res, onSuccess); |
| | | }, false); |
| | | |
| | | connection.eventSource.addEventListener("error", function (e) { |
| | | var error = signalR._.transportError( |
| | | signalR.resources.eventSourceError, |
| | | connection.transport, |
| | | e); |
| | | |
| | | // Only handle an error if the error is from the current Event Source. |
| | | // Sometimes on disconnect the server will push down an error event |
| | | // to an expired Event Source. |
| | | if (this !== connection.eventSource) { |
| | | return; |
| | | } |
| | | |
| | | if (onFailed && onFailed(error)) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("EventSource readyState: " + connection.eventSource.readyState + "."); |
| | | |
| | | if (e.eventPhase === window.EventSource.CLOSED) { |
| | | // We don't use the EventSource's native reconnect function as it |
| | | // doesn't allow us to change the URL when reconnecting. We need |
| | | // to change the URL to not include the /connect suffix, and pass |
| | | // the last message id we received. |
| | | connection.log("EventSource reconnecting due to the server connection ending."); |
| | | that.reconnect(connection); |
| | | } else { |
| | | // connection error |
| | | connection.log("EventSource error."); |
| | | $connection.triggerHandler(events.onError, [error]); |
| | | } |
| | | }, false); |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | transportLogic.reconnect(connection, this.name); |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | // Don't trigger a reconnect after stopping |
| | | clearReconnectAttemptTimeout(connection); |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (connection && connection.eventSource) { |
| | | connection.log("EventSource calling close()."); |
| | | connection.eventSource.close(); |
| | | connection.eventSource = null; |
| | | delete connection.eventSource; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.foreverFrame.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic, |
| | | createFrame = function () { |
| | | var frame = window.document.createElement("iframe"); |
| | | frame.setAttribute("style", "position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"); |
| | | return frame; |
| | | }, |
| | | // Used to prevent infinite loading icon spins in older versions of ie |
| | | // We build this object inside a closure so we don't pollute the rest of |
| | | // the foreverFrame transport with unnecessary functions/utilities. |
| | | loadPreventer = (function () { |
| | | var loadingFixIntervalId = null, |
| | | loadingFixInterval = 1000, |
| | | attachedTo = 0; |
| | | |
| | | return { |
| | | prevent: function () { |
| | | // Prevent additional iframe removal procedures from newer browsers |
| | | if (signalR._.ieVersion <= 8) { |
| | | // We only ever want to set the interval one time, so on the first attachedTo |
| | | if (attachedTo === 0) { |
| | | // Create and destroy iframe every 3 seconds to prevent loading icon, super hacky |
| | | loadingFixIntervalId = window.setInterval(function () { |
| | | var tempFrame = createFrame(); |
| | | |
| | | window.document.body.appendChild(tempFrame); |
| | | window.document.body.removeChild(tempFrame); |
| | | |
| | | tempFrame = null; |
| | | }, loadingFixInterval); |
| | | } |
| | | |
| | | attachedTo++; |
| | | } |
| | | }, |
| | | cancel: function () { |
| | | // Only clear the interval if there's only one more object that the loadPreventer is attachedTo |
| | | if (attachedTo === 1) { |
| | | window.clearInterval(loadingFixIntervalId); |
| | | } |
| | | |
| | | if (attachedTo > 0) { |
| | | attachedTo--; |
| | | } |
| | | } |
| | | }; |
| | | })(); |
| | | |
| | | signalR.transports.foreverFrame = { |
| | | name: "foreverFrame", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | // Added as a value here so we can create tests to verify functionality |
| | | iframeClearThreshold: 50, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var that = this, |
| | | frameId = (transportLogic.foreverFrame.count += 1), |
| | | url, |
| | | frame = createFrame(), |
| | | frameLoadHandler = function () { |
| | | connection.log("Forever frame iframe finished loading and is no longer receiving messages."); |
| | | if (!onFailed || !onFailed()) { |
| | | that.reconnect(connection); |
| | | } |
| | | }; |
| | | |
| | | if (window.EventSource) { |
| | | // If the browser supports SSE, don't use Forever Frame |
| | | if (onFailed) { |
| | | connection.log("Forever Frame is not supported by SignalR on browsers with SSE support."); |
| | | onFailed(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | frame.setAttribute("data-signalr-connection-id", connection.id); |
| | | |
| | | // Start preventing loading icon |
| | | // This will only perform work if the loadPreventer is not attached to another connection. |
| | | loadPreventer.prevent(); |
| | | |
| | | // Build the url |
| | | url = transportLogic.getUrl(connection, this.name); |
| | | url += "&frameId=" + frameId; |
| | | |
| | | // add frame to the document prior to setting URL to avoid caching issues. |
| | | window.document.documentElement.appendChild(frame); |
| | | |
| | | connection.log("Binding to iframe's load event."); |
| | | |
| | | if (frame.addEventListener) { |
| | | frame.addEventListener("load", frameLoadHandler, false); |
| | | } else if (frame.attachEvent) { |
| | | frame.attachEvent("onload", frameLoadHandler); |
| | | } |
| | | |
| | | frame.src = url; |
| | | transportLogic.foreverFrame.connections[frameId] = connection; |
| | | |
| | | connection.frame = frame; |
| | | connection.frameId = frameId; |
| | | |
| | | if (onSuccess) { |
| | | connection.onSuccess = function () { |
| | | connection.log("Iframe transport started."); |
| | | onSuccess(); |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | var that = this; |
| | | |
| | | // Need to verify connection state and verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration. |
| | | if (transportLogic.isConnectedOrReconnecting(connection) && transportLogic.verifyLastActive(connection)) { |
| | | window.setTimeout(function () { |
| | | // Verify that we're ok to reconnect. |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | if (connection.frame && transportLogic.ensureReconnectingState(connection)) { |
| | | var frame = connection.frame, |
| | | src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId; |
| | | connection.log("Updating iframe src to '" + src + "'."); |
| | | frame.src = src; |
| | | } |
| | | }, connection.reconnectDelay); |
| | | } |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | receive: function (connection, data) { |
| | | var cw, |
| | | body, |
| | | response; |
| | | |
| | | if (connection.json !== connection._originalJson) { |
| | | // If there's a custom JSON parser configured then serialize the object |
| | | // using the original (browser) JSON parser and then deserialize it using |
| | | // the custom parser (connection._parseResponse does that). This is so we |
| | | // can easily send the response from the server as "raw" JSON but still |
| | | // support custom JSON deserialization in the browser. |
| | | data = connection._originalJson.stringify(data); |
| | | } |
| | | |
| | | response = connection._parseResponse(data); |
| | | |
| | | transportLogic.processMessages(connection, response, connection.onSuccess); |
| | | |
| | | // Protect against connection stopping from a callback trigger within the processMessages above. |
| | | if (connection.state === $.signalR.connectionState.connected) { |
| | | // Delete the script & div elements |
| | | connection.frameMessageCount = (connection.frameMessageCount || 0) + 1; |
| | | if (connection.frameMessageCount > signalR.transports.foreverFrame.iframeClearThreshold) { |
| | | connection.frameMessageCount = 0; |
| | | cw = connection.frame.contentWindow || connection.frame.contentDocument; |
| | | if (cw && cw.document && cw.document.body) { |
| | | body = cw.document.body; |
| | | |
| | | // Remove all the child elements from the iframe's body to conserver memory |
| | | while (body.firstChild) { |
| | | body.removeChild(body.firstChild); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | var cw = null; |
| | | |
| | | // Stop attempting to prevent loading icon |
| | | loadPreventer.cancel(); |
| | | |
| | | if (connection.frame) { |
| | | if (connection.frame.stop) { |
| | | connection.frame.stop(); |
| | | } else { |
| | | try { |
| | | cw = connection.frame.contentWindow || connection.frame.contentDocument; |
| | | if (cw.document && cw.document.execCommand) { |
| | | cw.document.execCommand("Stop"); |
| | | } |
| | | } |
| | | catch (e) { |
| | | connection.log("Error occurred when stopping foreverFrame transport. Message = " + e.message + "."); |
| | | } |
| | | } |
| | | |
| | | // Ensure the iframe is where we left it |
| | | if (connection.frame.parentNode === window.document.documentElement) { |
| | | window.document.documentElement.removeChild(connection.frame); |
| | | } |
| | | |
| | | delete transportLogic.foreverFrame.connections[connection.frameId]; |
| | | connection.frame = null; |
| | | connection.frameId = null; |
| | | delete connection.frame; |
| | | delete connection.frameId; |
| | | delete connection.onSuccess; |
| | | delete connection.frameMessageCount; |
| | | connection.log("Stopping forever frame."); |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | }, |
| | | |
| | | getConnection: function (id) { |
| | | return transportLogic.foreverFrame.connections[id]; |
| | | }, |
| | | |
| | | started: function (connection) { |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | |
| | | $(connection).triggerHandler(events.onReconnect); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.longPolling.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | isDisconnecting = $.signalR.isDisconnecting, |
| | | transportLogic = signalR.transports._logic; |
| | | |
| | | signalR.transports.longPolling = { |
| | | name: "longPolling", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return false; |
| | | }, |
| | | |
| | | reconnectDelay: 3000, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | /// <summary>Starts the long polling connection</summary> |
| | | /// <param name="connection" type="signalR">The SignalR connection to start</param> |
| | | var that = this, |
| | | fireConnect = function () { |
| | | fireConnect = $.noop; |
| | | |
| | | connection.log("LongPolling connected."); |
| | | |
| | | if (onSuccess) { |
| | | onSuccess(); |
| | | } else { |
| | | connection.log("WARNING! The client received an init message after reconnecting."); |
| | | } |
| | | }, |
| | | tryFailConnect = function (error) { |
| | | if (onFailed(error)) { |
| | | connection.log("LongPolling failed to connect."); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | privateData = connection._, |
| | | reconnectErrors = 0, |
| | | fireReconnected = function (instance) { |
| | | window.clearTimeout(privateData.reconnectTimeoutId); |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | if (changeState(instance, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | // Successfully reconnected! |
| | | instance.log("Raising the reconnect event"); |
| | | $(instance).triggerHandler(events.onReconnect); |
| | | } |
| | | }, |
| | | // 1 hour |
| | | maxFireReconnectedTimeout = 3600000; |
| | | |
| | | if (connection.pollXhr) { |
| | | connection.log("Polling xhr requests already exists, aborting."); |
| | | connection.stop(); |
| | | } |
| | | |
| | | connection.messageId = null; |
| | | |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | (function poll(instance, raiseReconnect) { |
| | | var messageId = instance.messageId, |
| | | connect = (messageId === null), |
| | | reconnecting = !connect, |
| | | polling = !raiseReconnect, |
| | | url = transportLogic.getUrl(instance, that.name, reconnecting, polling, true /* use Post for longPolling */), |
| | | postData = {}; |
| | | |
| | | if (instance.messageId) { |
| | | postData.messageId = instance.messageId; |
| | | } |
| | | |
| | | if (instance.groupsToken) { |
| | | postData.groupsToken = instance.groupsToken; |
| | | } |
| | | |
| | | // If we've disconnected during the time we've tried to re-instantiate the poll then stop. |
| | | if (isDisconnecting(instance) === true) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("Opening long polling request to '" + url + "'."); |
| | | instance.pollXhr = transportLogic.ajax(connection, { |
| | | xhrFields: { |
| | | onprogress: function () { |
| | | transportLogic.markLastMessage(connection); |
| | | } |
| | | }, |
| | | url: url, |
| | | type: "POST", |
| | | contentType: signalR._.defaultContentType, |
| | | data: postData, |
| | | timeout: connection._.pollTimeout, |
| | | success: function (result) { |
| | | var minData, |
| | | delay = 0, |
| | | data, |
| | | shouldReconnect; |
| | | |
| | | connection.log("Long poll complete."); |
| | | |
| | | // Reset our reconnect errors so if we transition into a reconnecting state again we trigger |
| | | // reconnected quickly |
| | | reconnectErrors = 0; |
| | | |
| | | try { |
| | | // Remove any keep-alives from the beginning of the result |
| | | minData = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(instance, result, error, tryFailConnect, instance.pollXhr); |
| | | return; |
| | | } |
| | | |
| | | // If there's currently a timeout to trigger reconnect, fire it now before processing messages |
| | | if (privateData.reconnectTimeoutId !== null) { |
| | | fireReconnected(instance); |
| | | } |
| | | |
| | | if (minData) { |
| | | data = transportLogic.maximizePersistentResponse(minData); |
| | | } |
| | | |
| | | transportLogic.processMessages(instance, minData, fireConnect); |
| | | |
| | | if (data && |
| | | $.type(data.LongPollDelay) === "number") { |
| | | delay = data.LongPollDelay; |
| | | } |
| | | |
| | | if (isDisconnecting(instance) === true) { |
| | | return; |
| | | } |
| | | |
| | | shouldReconnect = data && data.ShouldReconnect; |
| | | if (shouldReconnect) { |
| | | // Transition into the reconnecting state |
| | | // If this fails then that means that the user transitioned the connection into a invalid state in processMessages. |
| | | if (!transportLogic.ensureReconnectingState(instance)) { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // We never want to pass a raiseReconnect flag after a successful poll. This is handled via the error function |
| | | if (delay > 0) { |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | poll(instance, shouldReconnect); |
| | | }, delay); |
| | | } else { |
| | | poll(instance, shouldReconnect); |
| | | } |
| | | }, |
| | | |
| | | error: function (data, textStatus) { |
| | | var error = signalR._.transportError(signalR.resources.longPollFailed, connection.transport, data, instance.pollXhr); |
| | | |
| | | // Stop trying to trigger reconnect, connection is in an error state |
| | | // If we're not in the reconnect state this will noop |
| | | window.clearTimeout(privateData.reconnectTimeoutId); |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | if (textStatus === "abort") { |
| | | connection.log("Aborted xhr request."); |
| | | return; |
| | | } |
| | | |
| | | if (!tryFailConnect(error)) { |
| | | |
| | | // Increment our reconnect errors, we assume all errors to be reconnect errors |
| | | // In the case that it's our first error this will cause Reconnect to be fired |
| | | // after 1 second due to reconnectErrors being = 1. |
| | | reconnectErrors++; |
| | | |
| | | if (connection.state !== signalR.connectionState.reconnecting) { |
| | | connection.log("An error occurred using longPolling. Status = " + textStatus + ". Response = " + data.responseText + "."); |
| | | $(instance).triggerHandler(events.onError, [error]); |
| | | } |
| | | |
| | | // We check the state here to verify that we're not in an invalid state prior to verifying Reconnect. |
| | | // If we're not in connected or reconnecting then the next ensureReconnectingState check will fail and will return. |
| | | // Therefore we don't want to change that failure code path. |
| | | if ((connection.state === signalR.connectionState.connected || |
| | | connection.state === signalR.connectionState.reconnecting) && |
| | | !transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | // Transition into the reconnecting state |
| | | // If this fails then that means that the user transitioned the connection into the disconnected or connecting state within the above error handler trigger. |
| | | if (!transportLogic.ensureReconnectingState(instance)) { |
| | | return; |
| | | } |
| | | |
| | | // Call poll with the raiseReconnect flag as true after the reconnect delay |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | poll(instance, true); |
| | | }, that.reconnectDelay); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // This will only ever pass after an error has occurred via the poll ajax procedure. |
| | | if (reconnecting && raiseReconnect === true) { |
| | | // We wait to reconnect depending on how many times we've failed to reconnect. |
| | | // This is essentially a heuristic that will exponentially increase in wait time before |
| | | // triggering reconnected. This depends on the "error" handler of Poll to cancel this |
| | | // timeout if it triggers before the Reconnected event fires. |
| | | // The Math.min at the end is to ensure that the reconnect timeout does not overflow. |
| | | privateData.reconnectTimeoutId = window.setTimeout(function () { fireReconnected(instance); }, Math.min(1000 * (Math.pow(2, reconnectErrors) - 1), maxFireReconnectedTimeout)); |
| | | } |
| | | }(connection)); |
| | | }, 250); // Have to delay initial poll so Chrome doesn't show loader spinner in tab |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | if (connection.pollXhr) { |
| | | connection.pollXhr.abort("lostConnection"); |
| | | } |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | /// <summary>Stops the long polling connection</summary> |
| | | /// <param name="connection" type="signalR">The SignalR connection to stop</param> |
| | | |
| | | window.clearTimeout(connection._.pollTimeoutId); |
| | | window.clearTimeout(connection._.reconnectTimeoutId); |
| | | |
| | | delete connection._.pollTimeoutId; |
| | | delete connection._.reconnectTimeoutId; |
| | | |
| | | if (connection.pollXhr) { |
| | | connection.pollXhr.abort(); |
| | | connection.pollXhr = null; |
| | | delete connection.pollXhr; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.hubs.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var eventNamespace = ".hubProxy", |
| | | signalR = $.signalR; |
| | | |
| | | function makeEventName(event) { |
| | | return event + eventNamespace; |
| | | } |
| | | |
| | | // Equivalent to Array.prototype.map |
| | | function map(arr, fun, thisp) { |
| | | var i, |
| | | length = arr.length, |
| | | result = []; |
| | | for (i = 0; i < length; i += 1) { |
| | | if (arr.hasOwnProperty(i)) { |
| | | result[i] = fun.call(thisp, arr[i], i, arr); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | function getArgValue(a) { |
| | | return $.isFunction(a) ? null : ($.type(a) === "undefined" ? null : a); |
| | | } |
| | | |
| | | function hasMembers(obj) { |
| | | for (var key in obj) { |
| | | // If we have any properties in our callback map then we have callbacks and can exit the loop via return |
| | | if (obj.hasOwnProperty(key)) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | function clearInvocationCallbacks(connection, error) { |
| | | /// <param name="connection" type="hubConnection" /> |
| | | var callbacks = connection._.invocationCallbacks, |
| | | callback; |
| | | |
| | | if (hasMembers(callbacks)) { |
| | | connection.log("Clearing hub invocation callbacks with error: " + error + "."); |
| | | } |
| | | |
| | | // Reset the callback cache now as we have a local var referencing it |
| | | connection._.invocationCallbackId = 0; |
| | | delete connection._.invocationCallbacks; |
| | | connection._.invocationCallbacks = {}; |
| | | |
| | | // Loop over the callbacks and invoke them. |
| | | // We do this using a local var reference and *after* we've cleared the cache |
| | | // so that if a fail callback itself tries to invoke another method we don't |
| | | // end up with its callback in the list we're looping over. |
| | | for (var callbackId in callbacks) { |
| | | callback = callbacks[callbackId]; |
| | | callback.method.call(callback.scope, { E: error }); |
| | | } |
| | | } |
| | | |
| | | // hubProxy |
| | | function hubProxy(hubConnection, hubName) { |
| | | /// <summary> |
| | | /// Creates a new proxy object for the given hub connection that can be used to invoke |
| | | /// methods on server hubs and handle client method invocation requests from the server. |
| | | /// </summary> |
| | | return new hubProxy.fn.init(hubConnection, hubName); |
| | | } |
| | | |
| | | hubProxy.fn = hubProxy.prototype = { |
| | | init: function (connection, hubName) { |
| | | this.state = {}; |
| | | this.connection = connection; |
| | | this.hubName = hubName; |
| | | this._ = { |
| | | callbackMap: {} |
| | | }; |
| | | }, |
| | | |
| | | constructor: hubProxy, |
| | | |
| | | hasSubscriptions: function () { |
| | | return hasMembers(this._.callbackMap); |
| | | }, |
| | | |
| | | on: function (eventName, callback) { |
| | | /// <summary>Wires up a callback to be invoked when a invocation request is received from the server hub.</summary> |
| | | /// <param name="eventName" type="String">The name of the hub event to register the callback for.</param> |
| | | /// <param name="callback" type="Function">The callback to be invoked.</param> |
| | | var that = this, |
| | | callbackMap = that._.callbackMap; |
| | | |
| | | // Normalize the event name to lowercase |
| | | eventName = eventName.toLowerCase(); |
| | | |
| | | // If there is not an event registered for this callback yet we want to create its event space in the callback map. |
| | | if (!callbackMap[eventName]) { |
| | | callbackMap[eventName] = {}; |
| | | } |
| | | |
| | | // Map the callback to our encompassed function |
| | | callbackMap[eventName][callback] = function (e, data) { |
| | | callback.apply(that, data); |
| | | }; |
| | | |
| | | $(that).bind(makeEventName(eventName), callbackMap[eventName][callback]); |
| | | |
| | | return that; |
| | | }, |
| | | |
| | | off: function (eventName, callback) { |
| | | /// <summary>Removes the callback invocation request from the server hub for the given event name.</summary> |
| | | /// <param name="eventName" type="String">The name of the hub event to unregister the callback for.</param> |
| | | /// <param name="callback" type="Function">The callback to be invoked.</param> |
| | | var that = this, |
| | | callbackMap = that._.callbackMap, |
| | | callbackSpace; |
| | | |
| | | // Normalize the event name to lowercase |
| | | eventName = eventName.toLowerCase(); |
| | | |
| | | callbackSpace = callbackMap[eventName]; |
| | | |
| | | // Verify that there is an event space to unbind |
| | | if (callbackSpace) { |
| | | // Only unbind if there's an event bound with eventName and a callback with the specified callback |
| | | if (callbackSpace[callback]) { |
| | | $(that).unbind(makeEventName(eventName), callbackSpace[callback]); |
| | | |
| | | // Remove the callback from the callback map |
| | | delete callbackSpace[callback]; |
| | | |
| | | // Check if there are any members left on the event, if not we need to destroy it. |
| | | if (!hasMembers(callbackSpace)) { |
| | | delete callbackMap[eventName]; |
| | | } |
| | | } else if (!callback) { // Check if we're removing the whole event and we didn't error because of an invalid callback |
| | | $(that).unbind(makeEventName(eventName)); |
| | | |
| | | delete callbackMap[eventName]; |
| | | } |
| | | } |
| | | |
| | | return that; |
| | | }, |
| | | |
| | | invoke: function (methodName) { |
| | | /// <summary>Invokes a server hub method with the given arguments.</summary> |
| | | /// <param name="methodName" type="String">The name of the server hub method.</param> |
| | | |
| | | var that = this, |
| | | connection = that.connection, |
| | | args = $.makeArray(arguments).slice(1), |
| | | argValues = map(args, getArgValue), |
| | | data = { H: that.hubName, M: methodName, A: argValues, I: connection._.invocationCallbackId }, |
| | | d = $.Deferred(), |
| | | callback = function (minResult) { |
| | | var result = that._maximizeHubResponse(minResult), |
| | | source, |
| | | error; |
| | | |
| | | // Update the hub state |
| | | $.extend(that.state, result.State); |
| | | |
| | | if (result.Progress) { |
| | | if (d.notifyWith) { |
| | | // Progress is only supported in jQuery 1.7+ |
| | | d.notifyWith(that, [result.Progress.Data]); |
| | | } else if(!connection._.progressjQueryVersionLogged) { |
| | | connection.log("A hub method invocation progress update was received but the version of jQuery in use (" + $.prototype.jquery + ") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications."); |
| | | connection._.progressjQueryVersionLogged = true; |
| | | } |
| | | } else if (result.Error) { |
| | | // Server hub method threw an exception, log it & reject the deferred |
| | | if (result.StackTrace) { |
| | | connection.log(result.Error + "\n" + result.StackTrace + "."); |
| | | } |
| | | |
| | | // result.ErrorData is only set if a HubException was thrown |
| | | source = result.IsHubException ? "HubException" : "Exception"; |
| | | error = signalR._.error(result.Error, source); |
| | | error.data = result.ErrorData; |
| | | |
| | | connection.log(that.hubName + "." + methodName + " failed to execute. Error: " + error.message); |
| | | d.rejectWith(that, [error]); |
| | | } else { |
| | | // Server invocation succeeded, resolve the deferred |
| | | connection.log("Invoked " + that.hubName + "." + methodName); |
| | | d.resolveWith(that, [result.Result]); |
| | | } |
| | | }; |
| | | |
| | | connection._.invocationCallbacks[connection._.invocationCallbackId.toString()] = { scope: that, method: callback }; |
| | | connection._.invocationCallbackId += 1; |
| | | |
| | | if (!$.isEmptyObject(that.state)) { |
| | | data.S = that.state; |
| | | } |
| | | |
| | | connection.log("Invoking " + that.hubName + "." + methodName); |
| | | connection.send(data); |
| | | |
| | | return d.promise(); |
| | | }, |
| | | |
| | | _maximizeHubResponse: function (minHubResponse) { |
| | | return { |
| | | State: minHubResponse.S, |
| | | Result: minHubResponse.R, |
| | | Progress: minHubResponse.P ? { |
| | | Id: minHubResponse.P.I, |
| | | Data: minHubResponse.P.D |
| | | } : null, |
| | | Id: minHubResponse.I, |
| | | IsHubException: minHubResponse.H, |
| | | Error: minHubResponse.E, |
| | | StackTrace: minHubResponse.T, |
| | | ErrorData: minHubResponse.D |
| | | }; |
| | | } |
| | | }; |
| | | |
| | | hubProxy.fn.init.prototype = hubProxy.fn; |
| | | |
| | | // hubConnection |
| | | function hubConnection(url, options) { |
| | | /// <summary>Creates a new hub connection.</summary> |
| | | /// <param name="url" type="String">[Optional] The hub route url, defaults to "/signalr".</param> |
| | | /// <param name="options" type="Object">[Optional] Settings to use when creating the hubConnection.</param> |
| | | var settings = { |
| | | qs: null, |
| | | logging: false, |
| | | useDefaultPath: true |
| | | }; |
| | | |
| | | $.extend(settings, options); |
| | | |
| | | if (!url || settings.useDefaultPath) { |
| | | url = (url || "") + "/signalr"; |
| | | } |
| | | return new hubConnection.fn.init(url, settings); |
| | | } |
| | | |
| | | hubConnection.fn = hubConnection.prototype = $.connection(); |
| | | |
| | | hubConnection.fn.init = function (url, options) { |
| | | var settings = { |
| | | qs: null, |
| | | logging: false, |
| | | useDefaultPath: true |
| | | }, |
| | | connection = this; |
| | | |
| | | $.extend(settings, options); |
| | | |
| | | // Call the base constructor |
| | | $.signalR.fn.init.call(connection, url, settings.qs, settings.logging); |
| | | |
| | | // Object to store hub proxies for this connection |
| | | connection.proxies = {}; |
| | | |
| | | connection._.invocationCallbackId = 0; |
| | | connection._.invocationCallbacks = {}; |
| | | |
| | | // Wire up the received handler |
| | | connection.received(function (minData) { |
| | | var data, proxy, dataCallbackId, callback, hubName, eventName; |
| | | if (!minData) { |
| | | return; |
| | | } |
| | | |
| | | // We have to handle progress updates first in order to ensure old clients that receive |
| | | // progress updates enter the return value branch and then no-op when they can't find |
| | | // the callback in the map (because the minData.I value will not be a valid callback ID) |
| | | if (typeof (minData.P) !== "undefined") { |
| | | // Process progress notification |
| | | dataCallbackId = minData.P.I.toString(); |
| | | callback = connection._.invocationCallbacks[dataCallbackId]; |
| | | if (callback) { |
| | | callback.method.call(callback.scope, minData); |
| | | } |
| | | } else if (typeof (minData.I) !== "undefined") { |
| | | // We received the return value from a server method invocation, look up callback by id and call it |
| | | dataCallbackId = minData.I.toString(); |
| | | callback = connection._.invocationCallbacks[dataCallbackId]; |
| | | if (callback) { |
| | | // Delete the callback from the proxy |
| | | connection._.invocationCallbacks[dataCallbackId] = null; |
| | | delete connection._.invocationCallbacks[dataCallbackId]; |
| | | |
| | | // Invoke the callback |
| | | callback.method.call(callback.scope, minData); |
| | | } |
| | | } else { |
| | | data = this._maximizeClientHubInvocation(minData); |
| | | |
| | | // We received a client invocation request, i.e. broadcast from server hub |
| | | connection.log("Triggering client hub event '" + data.Method + "' on hub '" + data.Hub + "'."); |
| | | |
| | | // Normalize the names to lowercase |
| | | hubName = data.Hub.toLowerCase(); |
| | | eventName = data.Method.toLowerCase(); |
| | | |
| | | // Trigger the local invocation event |
| | | proxy = this.proxies[hubName]; |
| | | |
| | | // Update the hub state |
| | | $.extend(proxy.state, data.State); |
| | | $(proxy).triggerHandler(makeEventName(eventName), [data.Args]); |
| | | } |
| | | }); |
| | | |
| | | connection.error(function (errData, origData) { |
| | | var callbackId, callback; |
| | | |
| | | if (!origData) { |
| | | // No original data passed so this is not a send error |
| | | return; |
| | | } |
| | | |
| | | callbackId = origData.I; |
| | | callback = connection._.invocationCallbacks[callbackId]; |
| | | |
| | | // Verify that there is a callback bound (could have been cleared) |
| | | if (callback) { |
| | | // Delete the callback |
| | | connection._.invocationCallbacks[callbackId] = null; |
| | | delete connection._.invocationCallbacks[callbackId]; |
| | | |
| | | // Invoke the callback with an error to reject the promise |
| | | callback.method.call(callback.scope, { E: errData }); |
| | | } |
| | | }); |
| | | |
| | | connection.reconnecting(function () { |
| | | if (connection.transport && connection.transport.name === "webSockets") { |
| | | clearInvocationCallbacks(connection, "Connection started reconnecting before invocation result was received."); |
| | | } |
| | | }); |
| | | |
| | | connection.disconnected(function () { |
| | | clearInvocationCallbacks(connection, "Connection was disconnected before invocation result was received."); |
| | | }); |
| | | }; |
| | | |
| | | hubConnection.fn._maximizeClientHubInvocation = function (minClientHubInvocation) { |
| | | return { |
| | | Hub: minClientHubInvocation.H, |
| | | Method: minClientHubInvocation.M, |
| | | Args: minClientHubInvocation.A, |
| | | State: minClientHubInvocation.S |
| | | }; |
| | | }; |
| | | |
| | | hubConnection.fn._registerSubscribedHubs = function () { |
| | | /// <summary> |
| | | /// Sets the starting event to loop through the known hubs and register any new hubs |
| | | /// that have been added to the proxy. |
| | | /// </summary> |
| | | var connection = this; |
| | | |
| | | if (!connection._subscribedToHubs) { |
| | | connection._subscribedToHubs = true; |
| | | connection.starting(function () { |
| | | // Set the connection's data object with all the hub proxies with active subscriptions. |
| | | // These proxies will receive notifications from the server. |
| | | var subscribedHubs = []; |
| | | |
| | | $.each(connection.proxies, function (key) { |
| | | if (this.hasSubscriptions()) { |
| | | subscribedHubs.push({ name: key }); |
| | | connection.log("Client subscribed to hub '" + key + "'."); |
| | | } |
| | | }); |
| | | |
| | | if (subscribedHubs.length === 0) { |
| | | connection.log("No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to."); |
| | | } |
| | | |
| | | connection.data = connection.json.stringify(subscribedHubs); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | hubConnection.fn.createHubProxy = function (hubName) { |
| | | /// <summary> |
| | | /// Creates a new proxy object for the given hub connection that can be used to invoke |
| | | /// methods on server hubs and handle client method invocation requests from the server. |
| | | /// </summary> |
| | | /// <param name="hubName" type="String"> |
| | | /// The name of the hub on the server to create the proxy for. |
| | | /// </param> |
| | | |
| | | // Normalize the name to lowercase |
| | | hubName = hubName.toLowerCase(); |
| | | |
| | | var proxy = this.proxies[hubName]; |
| | | if (!proxy) { |
| | | proxy = hubProxy(this, hubName); |
| | | this.proxies[hubName] = proxy; |
| | | } |
| | | |
| | | this._registerSubscribedHubs(); |
| | | |
| | | return proxy; |
| | | }; |
| | | |
| | | hubConnection.fn.init.prototype = hubConnection.fn; |
| | | |
| | | $.hubConnection = hubConnection; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.version.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | (function ($, undefined) { |
| | | $.signalR.version = "2.2.2"; |
| | | }(window.jQuery)); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * ASP.NET SignalR JavaScript Library v2.2.2 |
| | | * http://signalr.net/ |
| | | * |
| | | * Copyright (c) .NET Foundation. All rights reserved. |
| | | * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | * |
| | | */ |
| | | (function(n,t,i){function w(t,i){var u,f;if(n.isArray(t)){for(u=t.length-1;u>=0;u--)f=t[u],n.type(f)==="string"&&r.transports[f]||(i.log("Invalid transport: "+f+", removing it from the transports list."),t.splice(u,1));t.length===0&&(i.log("No transports remain within the specified transport array."),t=null)}else if(r.transports[t]||t==="auto"){if(t==="auto"&&r._.ieVersion<=8)return["longPolling"]}else i.log("Invalid transport: "+t.toString()+"."),t=null;return t}function b(n){return n==="http:"?80:n==="https:"?443:void 0}function a(n,t){return t.match(/:\d+$/)?t:t+":"+b(n)}function k(t,i){var u=this,r=[];u.tryBuffer=function(i){return t.state===n.signalR.connectionState.connecting?(r.push(i),!0):!1};u.drain=function(){if(t.state===n.signalR.connectionState.connected)while(r.length>0)i(r.shift())};u.clear=function(){r=[]}}var f={nojQuery:"jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.",noTransportOnInit:"No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.",errorOnNegotiate:"Error during negotiation request.",stoppedWhileLoading:"The connection was stopped during page load.",stoppedWhileNegotiating:"The connection was stopped during the negotiate request.",errorParsingNegotiateResponse:"Error parsing negotiate response.",errorDuringStartRequest:"Error during start request. Stopping the connection.",stoppedDuringStartRequest:"The connection was stopped during the start request.",errorParsingStartResponse:"Error parsing start response: '{0}'. Stopping the connection.",invalidStartResponse:"Invalid start response: '{0}'. Stopping the connection.",protocolIncompatible:"You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.",sendFailed:"Send failed.",parseFailed:"Failed at parsing response: {0}",longPollFailed:"Long polling request failed.",eventSourceFailedToConnect:"EventSource failed to connect.",eventSourceError:"Error raised by EventSource",webSocketClosed:"WebSocket closed.",pingServerFailedInvalidResponse:"Invalid ping response when pinging server: '{0}'.",pingServerFailed:"Failed to ping server.",pingServerFailedStatusCode:"Failed to ping server. Server responded with status code {0}, stopping the connection.",pingServerFailedParse:"Failed to parse ping server response, stopping the connection.",noConnectionTransport:"Connection is in an invalid state, there is no transport active.",webSocketsInvalidState:"The Web Socket transport is in an invalid state, transitioning into reconnecting.",reconnectTimeout:"Couldn't reconnect within the configured timeout of {0} ms, disconnecting.",reconnectWindowTimeout:"The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection."};if(typeof n!="function")throw new Error(f.nojQuery);var r,h,o=t.document.readyState==="complete",e=n(t),c="__Negotiate Aborted__",u={onStart:"onStart",onStarting:"onStarting",onReceived:"onReceived",onError:"onError",onConnectionSlow:"onConnectionSlow",onReconnecting:"onReconnecting",onReconnect:"onReconnect",onStateChanged:"onStateChanged",onDisconnect:"onDisconnect"},v=function(n,i){if(i!==!1){var r;typeof t.console!="undefined"&&(r="["+(new Date).toTimeString()+"] SignalR: "+n,t.console.debug?t.console.debug(r):t.console.log&&t.console.log(r))}},s=function(t,i,r){return i===t.state?(t.state=r,n(t).triggerHandler(u.onStateChanged,[{oldState:i,newState:r}]),!0):!1},y=function(n){return n.state===r.connectionState.disconnected},l=function(n){return n._.keepAliveData.activated&&n.transport.supportsKeepAlive(n)},p=function(i){var f,e;i._.configuredStopReconnectingTimeout||(e=function(t){var i=r._.format(r.resources.reconnectTimeout,t.disconnectTimeout);t.log(i);n(t).triggerHandler(u.onError,[r._.error(i,"TimeoutException")]);t.stop(!1,!1)},i.reconnecting(function(){var n=this;n.state===r.connectionState.reconnecting&&(f=t.setTimeout(function(){e(n)},n.disconnectTimeout))}),i.stateChanged(function(n){n.oldState===r.connectionState.reconnecting&&t.clearTimeout(f)}),i._.configuredStopReconnectingTimeout=!0)};if(r=function(n,t,i){return new r.fn.init(n,t,i)},r._={defaultContentType:"application/x-www-form-urlencoded; charset=UTF-8",ieVersion:function(){var i,n;return t.navigator.appName==="Microsoft Internet Explorer"&&(n=/MSIE ([0-9]+\.[0-9]+)/.exec(t.navigator.userAgent),n&&(i=t.parseFloat(n[1]))),i}(),error:function(n,t,i){var r=new Error(n);return r.source=t,typeof i!="undefined"&&(r.context=i),r},transportError:function(n,t,r,u){var f=this.error(n,r,u);return f.transport=t?t.name:i,f},format:function(){for(var t=arguments[0],n=0;n<arguments.length-1;n++)t=t.replace("{"+n+"}",arguments[n+1]);return t},firefoxMajorVersion:function(n){var t=n.match(/Firefox\/(\d+)/);return!t||!t.length||t.length<2?0:parseInt(t[1],10)},configurePingInterval:function(i){var f=i._.config,e=function(t){n(i).triggerHandler(u.onError,[t])};f&&!i._.pingIntervalId&&f.pingInterval&&(i._.pingIntervalId=t.setInterval(function(){r.transports._logic.pingServer(i).fail(e)},f.pingInterval))}},r.events=u,r.resources=f,r.ajaxDefaults={processData:!0,timeout:null,async:!0,global:!1,cache:!1},r.changeState=s,r.isDisconnecting=y,r.connectionState={connecting:0,connected:1,reconnecting:2,disconnected:4},r.hub={start:function(){throw new Error("SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'><\/script>.");}},typeof e.on=="function")e.on("load",function(){o=!0});else e.load(function(){o=!0});r.fn=r.prototype={init:function(t,i,r){var f=n(this);this.url=t;this.qs=i;this.lastError=null;this._={keepAliveData:{},connectingMessageBuffer:new k(this,function(n){f.triggerHandler(u.onReceived,[n])}),lastMessageAt:(new Date).getTime(),lastActiveAt:(new Date).getTime(),beatInterval:5e3,beatHandle:null,totalTransportConnectTimeout:0};typeof r=="boolean"&&(this.logging=r)},_parseResponse:function(n){var t=this;return n?typeof n=="string"?t.json.parse(n):n:n},_originalJson:t.JSON,json:t.JSON,isCrossDomain:function(i,r){var u;return(i=n.trim(i),r=r||t.location,i.indexOf("http")!==0)?!1:(u=t.document.createElement("a"),u.href=i,u.protocol+a(u.protocol,u.host)!==r.protocol+a(r.protocol,r.host))},ajaxDataType:"text",contentType:"application/json; charset=UTF-8",logging:!1,state:r.connectionState.disconnected,clientProtocol:"1.5",reconnectDelay:2e3,transportConnectTimeout:0,disconnectTimeout:3e4,reconnectWindow:3e4,keepAliveWarnAt:2/3,start:function(i,h){var a=this,v={pingInterval:3e5,waitForPageLoad:!0,transport:"auto",jsonp:!1},d,y=a._deferral||n.Deferred(),b=t.document.createElement("a"),k,g;if(a.lastError=null,a._deferral=y,!a.json)throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.");if(n.type(i)==="function"?h=i:n.type(i)==="object"&&(n.extend(v,i),n.type(v.callback)==="function"&&(h=v.callback)),v.transport=w(v.transport,a),!v.transport)throw new Error("SignalR: Invalid transport(s) specified, aborting start.");return(a._.config=v,!o&&v.waitForPageLoad===!0)?(a._.deferredStartHandler=function(){a.start(i,h)},e.bind("load",a._.deferredStartHandler),y.promise()):a.state===r.connectionState.connecting?y.promise():s(a,r.connectionState.disconnected,r.connectionState.connecting)===!1?(y.resolve(a),y.promise()):(p(a),b.href=a.url,b.protocol&&b.protocol!==":"?(a.protocol=b.protocol,a.host=b.host):(a.protocol=t.document.location.protocol,a.host=b.host||t.document.location.host),a.baseUrl=a.protocol+"//"+a.host,a.wsProtocol=a.protocol==="https:"?"wss://":"ws://",v.transport==="auto"&&v.jsonp===!0&&(v.transport="longPolling"),a.url.indexOf("//")===0&&(a.url=t.location.protocol+a.url,a.log("Protocol relative URL detected, normalizing it to '"+a.url+"'.")),this.isCrossDomain(a.url)&&(a.log("Auto detected cross domain url."),v.transport==="auto"&&(v.transport=["webSockets","serverSentEvents","longPolling"]),typeof v.withCredentials=="undefined"&&(v.withCredentials=!0),v.jsonp||(v.jsonp=!n.support.cors,v.jsonp&&a.log("Using jsonp because this browser doesn't support CORS.")),a.contentType=r._.defaultContentType),a.withCredentials=v.withCredentials,a.ajaxDataType=v.jsonp?"jsonp":"text",n(a).bind(u.onStart,function(){n.type(h)==="function"&&h.call(a);y.resolve(a)}),a._.initHandler=r.transports._logic.initHandler(a),d=function(i,o){var c=r._.error(f.noTransportOnInit);if(o=o||0,o>=i.length){o===0?a.log("No transports supported by the server were selected."):o===1?a.log("No fallback transports were selected."):a.log("Fallback transports exhausted.");n(a).triggerHandler(u.onError,[c]);y.reject(c);a.stop();return}if(a.state!==r.connectionState.disconnected){var p=i[o],h=r.transports[p],v=function(){d(i,o+1)};a.transport=h;try{a._.initHandler.start(h,function(){var i=r._.firefoxMajorVersion(t.navigator.userAgent)>=11,f=!!a.withCredentials&&i;a.log("The start request succeeded. Transitioning to the connected state.");l(a)&&r.transports._logic.monitorKeepAlive(a);r.transports._logic.startHeartbeat(a);r._.configurePingInterval(a);s(a,r.connectionState.connecting,r.connectionState.connected)||a.log("WARNING! The connection was not in the connecting state.");a._.connectingMessageBuffer.drain();n(a).triggerHandler(u.onStart);e.bind("unload",function(){a.log("Window unloading, stopping the connection.");a.stop(f)});i&&e.bind("beforeunload",function(){t.setTimeout(function(){a.stop(f)},0)})},v)}catch(w){a.log(h.name+" transport threw '"+w.message+"' when attempting to start.");v()}}},k=a.url+"/negotiate",g=function(t,i){var e=r._.error(f.errorOnNegotiate,t,i._.negotiateRequest);n(i).triggerHandler(u.onError,e);y.reject(e);i.stop()},n(a).triggerHandler(u.onStarting),k=r.transports._logic.prepareQueryString(a,k),a.log("Negotiating with '"+k+"'."),a._.negotiateRequest=r.transports._logic.ajax(a,{url:k,error:function(n,t){t!==c?g(n,a):y.reject(r._.error(f.stoppedWhileNegotiating,null,a._.negotiateRequest))},success:function(t){var i,e,h,o=[],s=[];try{i=a._parseResponse(t)}catch(c){g(r._.error(f.errorParsingNegotiateResponse,c),a);return}if(e=a._.keepAliveData,a.appRelativeUrl=i.Url,a.id=i.ConnectionId,a.token=i.ConnectionToken,a.webSocketServerUrl=i.WebSocketServerUrl,a._.pollTimeout=i.ConnectionTimeout*1e3+1e4,a.disconnectTimeout=i.DisconnectTimeout*1e3,a._.totalTransportConnectTimeout=a.transportConnectTimeout+i.TransportConnectTimeout*1e3,i.KeepAliveTimeout?(e.activated=!0,e.timeout=i.KeepAliveTimeout*1e3,e.timeoutWarning=e.timeout*a.keepAliveWarnAt,a._.beatInterval=(e.timeout-e.timeoutWarning)/3):e.activated=!1,a.reconnectWindow=a.disconnectTimeout+(e.timeout||0),!i.ProtocolVersion||i.ProtocolVersion!==a.clientProtocol){h=r._.error(r._.format(f.protocolIncompatible,a.clientProtocol,i.ProtocolVersion));n(a).triggerHandler(u.onError,[h]);y.reject(h);return}n.each(r.transports,function(n){if(n.indexOf("_")===0||n==="webSockets"&&!i.TryWebSockets)return!0;s.push(n)});n.isArray(v.transport)?n.each(v.transport,function(t,i){n.inArray(i,s)>=0&&o.push(i)}):v.transport==="auto"?o=s:n.inArray(v.transport,s)>=0&&o.push(v.transport);d(o)}}),y.promise())},starting:function(t){var i=this;return n(i).bind(u.onStarting,function(){t.call(i)}),i},send:function(n){var t=this;if(t.state===r.connectionState.disconnected)throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()");if(t.state===r.connectionState.connecting)throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.");return t.transport.send(t,n),t},received:function(t){var i=this;return n(i).bind(u.onReceived,function(n,r){t.call(i,r)}),i},stateChanged:function(t){var i=this;return n(i).bind(u.onStateChanged,function(n,r){t.call(i,r)}),i},error:function(t){var i=this;return n(i).bind(u.onError,function(n,r,u){i.lastError=r;t.call(i,r,u)}),i},disconnected:function(t){var i=this;return n(i).bind(u.onDisconnect,function(){t.call(i)}),i},connectionSlow:function(t){var i=this;return n(i).bind(u.onConnectionSlow,function(){t.call(i)}),i},reconnecting:function(t){var i=this;return n(i).bind(u.onReconnecting,function(){t.call(i)}),i},reconnected:function(t){var i=this;return n(i).bind(u.onReconnect,function(){t.call(i)}),i},stop:function(i,h){var a=this,v=a._deferral;if(a._.deferredStartHandler&&e.unbind("load",a._.deferredStartHandler),delete a._.config,delete a._.deferredStartHandler,!o&&(!a._.config||a._.config.waitForPageLoad===!0)){a.log("Stopping connection prior to negotiate.");v&&v.reject(r._.error(f.stoppedWhileLoading));return}if(a.state!==r.connectionState.disconnected)return a.log("Stopping connection."),t.clearTimeout(a._.beatHandle),t.clearInterval(a._.pingIntervalId),a.transport&&(a.transport.stop(a),h!==!1&&a.transport.abort(a,i),l(a)&&r.transports._logic.stopMonitoringKeepAlive(a),a.transport=null),a._.negotiateRequest&&(a._.negotiateRequest.abort(c),delete a._.negotiateRequest),a._.initHandler&&a._.initHandler.stop(),delete a._deferral,delete a.messageId,delete a.groupsToken,delete a.id,delete a._.pingIntervalId,delete a._.lastMessageAt,delete a._.lastActiveAt,a._.connectingMessageBuffer.clear(),n(a).unbind(u.onStart),s(a,a.state,r.connectionState.disconnected),n(a).triggerHandler(u.onDisconnect),a},log:function(n){v(n,this.logging)}};r.fn.init.prototype=r.fn;r.noConflict=function(){return n.connection===r&&(n.connection=h),r};n.connection&&(h=n.connection);n.connection=n.signalR=r})(window.jQuery,window),function(n,t,i){function s(n){n._.keepAliveData.monitoring&&l(n);u.markActive(n)&&(n._.beatHandle=t.setTimeout(function(){s(n)},n._.beatInterval))}function l(t){var i=t._.keepAliveData,u;t.state===r.connectionState.connected&&(u=(new Date).getTime()-t._.lastMessageAt,u>=i.timeout?(t.log("Keep alive timed out. Notifying transport that connection has been lost."),t.transport.lostConnection(t)):u>=i.timeoutWarning?i.userNotified||(t.log("Keep alive has been missed, connection may be dead/slow."),n(t).triggerHandler(f.onConnectionSlow),i.userNotified=!0):i.userNotified=!1)}function e(n,t){var i=n.url+t;return n.transport&&(i+="?transport="+n.transport.name),u.prepareQueryString(n,i)}function h(n){this.connection=n;this.startRequested=!1;this.startCompleted=!1;this.connectionStopped=!1}var r=n.signalR,f=n.signalR.events,c=n.signalR.changeState,o="__Start Aborted__",u;r.transports={};h.prototype={start:function(n,r,u){var f=this,e=f.connection,o=!1;if(f.startRequested||f.connectionStopped){e.log("WARNING! "+n.name+" transport cannot be started. Initialization ongoing or completed.");return}e.log(n.name+" transport starting.");n.start(e,function(){o||f.initReceived(n,r)},function(t){return o||(o=!0,f.transportFailed(n,t,u)),!f.startCompleted||f.connectionStopped});f.transportTimeoutHandle=t.setTimeout(function(){o||(o=!0,e.log(n.name+" transport timed out when trying to connect."),f.transportFailed(n,i,u))},e._.totalTransportConnectTimeout)},stop:function(){this.connectionStopped=!0;t.clearTimeout(this.transportTimeoutHandle);r.transports._logic.tryAbortStartRequest(this.connection)},initReceived:function(n,i){var u=this,f=u.connection;if(u.startRequested){f.log("WARNING! The client received multiple init messages.");return}u.connectionStopped||(u.startRequested=!0,t.clearTimeout(u.transportTimeoutHandle),f.log(n.name+" transport connected. Initiating start request."),r.transports._logic.ajaxStart(f,function(){u.startCompleted=!0;i()}))},transportFailed:function(i,u,e){var o=this.connection,h=o._deferral,s;this.connectionStopped||(t.clearTimeout(this.transportTimeoutHandle),this.startRequested?this.startCompleted||(s=r._.error(r.resources.errorDuringStartRequest,u),o.log(i.name+" transport failed during the start request. Stopping the connection."),n(o).triggerHandler(f.onError,[s]),h&&h.reject(s),o.stop()):(i.stop(o),o.log(i.name+" transport failed to connect. Attempting to fall back."),e()))}};u=r.transports._logic={ajax:function(t,i){return n.ajax(n.extend(!0,{},n.signalR.ajaxDefaults,{type:"GET",data:{},xhrFields:{withCredentials:t.withCredentials},contentType:t.contentType,dataType:t.ajaxDataType},i))},pingServer:function(t){var e,f,i=n.Deferred();return t.transport?(e=t.url+"/ping",e=u.addQs(e,t.qs),f=u.ajax(t,{url:e,success:function(n){var u;try{u=t._parseResponse(n)}catch(e){i.reject(r._.transportError(r.resources.pingServerFailedParse,t.transport,e,f));t.stop();return}u.Response==="pong"?i.resolve():i.reject(r._.transportError(r._.format(r.resources.pingServerFailedInvalidResponse,n),t.transport,null,f))},error:function(n){n.status===401||n.status===403?(i.reject(r._.transportError(r._.format(r.resources.pingServerFailedStatusCode,n.status),t.transport,n,f)),t.stop()):i.reject(r._.transportError(r.resources.pingServerFailed,t.transport,n,f))}})):i.reject(r._.transportError(r.resources.noConnectionTransport,t.transport)),i.promise()},prepareQueryString:function(n,i){var r;return r=u.addQs(i,"clientProtocol="+n.clientProtocol),r=u.addQs(r,n.qs),n.token&&(r+="&connectionToken="+t.encodeURIComponent(n.token)),n.data&&(r+="&connectionData="+t.encodeURIComponent(n.data)),r},addQs:function(t,i){var r=t.indexOf("?")!==-1?"&":"?",u;if(!i)return t;if(typeof i=="object")return t+r+n.param(i);if(typeof i=="string")return u=i.charAt(0),(u==="?"||u==="&")&&(r=""),t+r+i;throw new Error("Query string property must be either a string or object.");},getUrl:function(n,i,r,f,e){var h=i==="webSockets"?"":n.baseUrl,o=h+n.appRelativeUrl,s="transport="+i;return!e&&n.groupsToken&&(s+="&groupsToken="+t.encodeURIComponent(n.groupsToken)),r?(o+=f?"/poll":"/reconnect",!e&&n.messageId&&(s+="&messageId="+t.encodeURIComponent(n.messageId))):o+="/connect",o+="?"+s,o=u.prepareQueryString(n,o),e||(o+="&tid="+Math.floor(Math.random()*11)),o},maximizePersistentResponse:function(n){return{MessageId:n.C,Messages:n.M,Initialized:typeof n.S!="undefined"?!0:!1,ShouldReconnect:typeof n.T!="undefined"?!0:!1,LongPollDelay:n.L,GroupsToken:n.G}},updateGroups:function(n,t){t&&(n.groupsToken=t)},stringifySend:function(n,t){return typeof t=="string"||typeof t=="undefined"||t===null?t:n.json.stringify(t)},ajaxSend:function(t,i){var h=u.stringifySend(t,i),c=e(t,"/send"),o,s=function(t,u){n(u).triggerHandler(f.onError,[r._.transportError(r.resources.sendFailed,u.transport,t,o),i])};return o=u.ajax(t,{url:c,type:t.ajaxDataType==="jsonp"?"GET":"POST",contentType:r._.defaultContentType,data:{data:h},success:function(n){var i;if(n){try{i=t._parseResponse(n)}catch(r){s(r,t);t.stop();return}u.triggerReceived(t,i)}},error:function(n,i){i!=="abort"&&i!=="parsererror"&&s(n,t)}})},ajaxAbort:function(n,t){if(typeof n.transport!="undefined"){t=typeof t=="undefined"?!0:t;var i=e(n,"/abort");u.ajax(n,{url:i,async:t,timeout:1e3,type:"POST"});n.log("Fired ajax abort async = "+t+".")}},ajaxStart:function(t,i){var h=function(n){var i=t._deferral;i&&i.reject(n)},s=function(i){t.log("The start request failed. Stopping the connection.");n(t).triggerHandler(f.onError,[i]);h(i);t.stop()};t._.startRequest=u.ajax(t,{url:e(t,"/start"),success:function(n,u,f){var e;try{e=t._parseResponse(n)}catch(o){s(r._.error(r._.format(r.resources.errorParsingStartResponse,n),o,f));return}e.Response==="started"?i():s(r._.error(r._.format(r.resources.invalidStartResponse,n),null,f))},error:function(n,i,u){i!==o?s(r._.error(r.resources.errorDuringStartRequest,u,n)):(t.log("The start request aborted because connection.stop() was called."),h(r._.error(r.resources.stoppedDuringStartRequest,null,n)))}})},tryAbortStartRequest:function(n){n._.startRequest&&(n._.startRequest.abort(o),delete n._.startRequest)},tryInitialize:function(n,t,i){t.Initialized&&i?i():t.Initialized&&n.log("WARNING! The client received an init message after reconnecting.")},triggerReceived:function(t,i){t._.connectingMessageBuffer.tryBuffer(i)||n(t).triggerHandler(f.onReceived,[i])},processMessages:function(t,i,r){var f;u.markLastMessage(t);i&&(f=u.maximizePersistentResponse(i),u.updateGroups(t,f.GroupsToken),f.MessageId&&(t.messageId=f.MessageId),f.Messages&&(n.each(f.Messages,function(n,i){u.triggerReceived(t,i)}),u.tryInitialize(t,f,r)))},monitorKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring?t.log("Tried to monitor keep alive but it's already being monitored."):(i.monitoring=!0,u.markLastMessage(t),t._.keepAliveData.reconnectKeepAliveUpdate=function(){u.markLastMessage(t)},n(t).bind(f.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t.log("Now monitoring keep alive with a warning timeout of "+i.timeoutWarning+", keep alive timeout of "+i.timeout+" and disconnecting timeout of "+t.disconnectTimeout))},stopMonitoringKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring&&(i.monitoring=!1,n(t).unbind(f.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t._.keepAliveData={},t.log("Stopping the monitoring of the keep alive."))},startHeartbeat:function(n){n._.lastActiveAt=(new Date).getTime();s(n)},markLastMessage:function(n){n._.lastMessageAt=(new Date).getTime()},markActive:function(n){return u.verifyLastActive(n)?(n._.lastActiveAt=(new Date).getTime(),!0):!1},isConnectedOrReconnecting:function(n){return n.state===r.connectionState.connected||n.state===r.connectionState.reconnecting},ensureReconnectingState:function(t){return c(t,r.connectionState.connected,r.connectionState.reconnecting)===!0&&n(t).triggerHandler(f.onReconnecting),t.state===r.connectionState.reconnecting},clearReconnectTimeout:function(n){n&&n._.reconnectTimeout&&(t.clearTimeout(n._.reconnectTimeout),delete n._.reconnectTimeout)},verifyLastActive:function(t){if((new Date).getTime()-t._.lastActiveAt>=t.reconnectWindow){var i=r._.format(r.resources.reconnectWindowTimeout,new Date(t._.lastActiveAt),t.reconnectWindow);return t.log(i),n(t).triggerHandler(f.onError,[r._.error(i,"TimeoutException")]),t.stop(!1,!1),!1}return!0},reconnect:function(n,i){var f=r.transports[i];if(u.isConnectedOrReconnecting(n)&&!n._.reconnectTimeout){if(!u.verifyLastActive(n))return;n._.reconnectTimeout=t.setTimeout(function(){u.verifyLastActive(n)&&(f.stop(n),u.ensureReconnectingState(n)&&(n.log(i+" reconnecting."),f.start(n)))},n.reconnectDelay)}},handleParseFailure:function(t,i,u,e,o){var s=r._.transportError(r._.format(r.resources.parseFailed,i),t.transport,u,o);e&&e(s)?t.log("Failed to parse server response while attempting to connect."):(n(t).triggerHandler(f.onError,[s]),t.stop())},initHandler:function(n){return new h(n)},foreverFrame:{count:0,connections:{}}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,f=n.signalR.changeState,i=r.transports._logic;r.transports.webSockets={name:"webSockets",supportsKeepAlive:function(){return!0},send:function(t,f){var e=i.stringifySend(t,f);try{t.socket.send(e)}catch(o){n(t).triggerHandler(u.onError,[r._.transportError(r.resources.webSocketsInvalidState,t.transport,o,t.socket),f])}},start:function(e,o,s){var h,c=!1,l=this,a=!o,v=n(e);if(!t.WebSocket){s();return}e.socket||(h=e.webSocketServerUrl?e.webSocketServerUrl:e.wsProtocol+e.host,h+=i.getUrl(e,this.name,a),e.log("Connecting to websocket endpoint '"+h+"'."),e.socket=new t.WebSocket(h),e.socket.onopen=function(){c=!0;e.log("Websocket opened.");i.clearReconnectTimeout(e);f(e,r.connectionState.reconnecting,r.connectionState.connected)===!0&&v.triggerHandler(u.onReconnect)},e.socket.onclose=function(t){var i;this===e.socket&&(c&&typeof t.wasClean!="undefined"&&t.wasClean===!1?(i=r._.transportError(r.resources.webSocketClosed,e.transport,t),e.log("Unclean disconnect from websocket: "+(t.reason||"[no reason given]."))):e.log("Websocket closed."),s&&s(i)||(i&&n(e).triggerHandler(u.onError,[i]),l.reconnect(e)))},e.socket.onmessage=function(t){var r;try{r=e._parseResponse(t.data)}catch(u){i.handleParseFailure(e,t.data,u,s,t);return}r&&(n.isEmptyObject(r)||r.M?i.processMessages(e,r,o):i.triggerReceived(e,r))})},reconnect:function(n){i.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},stop:function(n){i.clearReconnectTimeout(n);n.socket&&(n.log("Closing the Websocket."),n.socket.close(),n.socket=null)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var i=n.signalR,u=n.signalR.events,e=n.signalR.changeState,r=i.transports._logic,f=function(n){t.clearTimeout(n._.reconnectAttemptTimeoutHandle);delete n._.reconnectAttemptTimeoutHandle};i.transports.serverSentEvents={name:"serverSentEvents",supportsKeepAlive:function(){return!0},timeOut:3e3,start:function(o,s,h){var c=this,l=!1,a=n(o),v=!s,y;if(o.eventSource&&(o.log("The connection already has an event source. Stopping it."),o.stop()),!t.EventSource){h&&(o.log("This browser doesn't support SSE."),h());return}y=r.getUrl(o,this.name,v);try{o.log("Attempting to connect to SSE endpoint '"+y+"'.");o.eventSource=new t.EventSource(y,{withCredentials:o.withCredentials})}catch(p){o.log("EventSource failed trying to connect with error "+p.Message+".");h?h():(a.triggerHandler(u.onError,[i._.transportError(i.resources.eventSourceFailedToConnect,o.transport,p)]),v&&c.reconnect(o));return}v&&(o._.reconnectAttemptTimeoutHandle=t.setTimeout(function(){l===!1&&o.eventSource.readyState!==t.EventSource.OPEN&&c.reconnect(o)},c.timeOut));o.eventSource.addEventListener("open",function(){o.log("EventSource connected.");f(o);r.clearReconnectTimeout(o);l===!1&&(l=!0,e(o,i.connectionState.reconnecting,i.connectionState.connected)===!0&&a.triggerHandler(u.onReconnect))},!1);o.eventSource.addEventListener("message",function(n){var t;if(n.data!=="initialized"){try{t=o._parseResponse(n.data)}catch(i){r.handleParseFailure(o,n.data,i,h,n);return}r.processMessages(o,t,s)}},!1);o.eventSource.addEventListener("error",function(n){var r=i._.transportError(i.resources.eventSourceError,o.transport,n);this===o.eventSource&&(h&&h(r)||(o.log("EventSource readyState: "+o.eventSource.readyState+"."),n.eventPhase===t.EventSource.CLOSED?(o.log("EventSource reconnecting due to the server connection ending."),c.reconnect(o)):(o.log("EventSource error."),a.triggerHandler(u.onError,[r]))))},!1)},reconnect:function(n){r.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){r.ajaxSend(n,t)},stop:function(n){f(n);r.clearReconnectTimeout(n);n&&n.eventSource&&(n.log("EventSource calling close()."),n.eventSource.close(),n.eventSource=null,delete n.eventSource)},abort:function(n,t){r.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var r=n.signalR,e=n.signalR.events,o=n.signalR.changeState,i=r.transports._logic,u=function(){var n=t.document.createElement("iframe");return n.setAttribute("style","position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"),n},f=function(){var i=null,f=1e3,n=0;return{prevent:function(){r._.ieVersion<=8&&(n===0&&(i=t.setInterval(function(){var n=u();t.document.body.appendChild(n);t.document.body.removeChild(n);n=null},f)),n++)},cancel:function(){n===1&&t.clearInterval(i);n>0&&n--}}}();r.transports.foreverFrame={name:"foreverFrame",supportsKeepAlive:function(){return!0},iframeClearThreshold:50,start:function(n,r,e){var l=this,s=i.foreverFrame.count+=1,h,o=u(),c=function(){n.log("Forever frame iframe finished loading and is no longer receiving messages.");e&&e()||l.reconnect(n)};if(t.EventSource){e&&(n.log("Forever Frame is not supported by SignalR on browsers with SSE support."),e());return}o.setAttribute("data-signalr-connection-id",n.id);f.prevent();h=i.getUrl(n,this.name);h+="&frameId="+s;t.document.documentElement.appendChild(o);n.log("Binding to iframe's load event.");o.addEventListener?o.addEventListener("load",c,!1):o.attachEvent&&o.attachEvent("onload",c);o.src=h;i.foreverFrame.connections[s]=n;n.frame=o;n.frameId=s;r&&(n.onSuccess=function(){n.log("Iframe transport started.");r()})},reconnect:function(n){var r=this;i.isConnectedOrReconnecting(n)&&i.verifyLastActive(n)&&t.setTimeout(function(){if(i.verifyLastActive(n)&&n.frame&&i.ensureReconnectingState(n)){var u=n.frame,t=i.getUrl(n,r.name,!0)+"&frameId="+n.frameId;n.log("Updating iframe src to '"+t+"'.");u.src=t}},n.reconnectDelay)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){i.ajaxSend(n,t)},receive:function(t,u){var f,e,o;if(t.json!==t._originalJson&&(u=t._originalJson.stringify(u)),o=t._parseResponse(u),i.processMessages(t,o,t.onSuccess),t.state===n.signalR.connectionState.connected&&(t.frameMessageCount=(t.frameMessageCount||0)+1,t.frameMessageCount>r.transports.foreverFrame.iframeClearThreshold&&(t.frameMessageCount=0,f=t.frame.contentWindow||t.frame.contentDocument,f&&f.document&&f.document.body)))for(e=f.document.body;e.firstChild;)e.removeChild(e.firstChild)},stop:function(n){var r=null;if(f.cancel(),n.frame){if(n.frame.stop)n.frame.stop();else try{r=n.frame.contentWindow||n.frame.contentDocument;r.document&&r.document.execCommand&&r.document.execCommand("Stop")}catch(u){n.log("Error occurred when stopping foreverFrame transport. Message = "+u.message+".")}n.frame.parentNode===t.document.documentElement&&t.document.documentElement.removeChild(n.frame);delete i.foreverFrame.connections[n.frameId];n.frame=null;n.frameId=null;delete n.frame;delete n.frameId;delete n.onSuccess;delete n.frameMessageCount;n.log("Stopping forever frame.")}},abort:function(n,t){i.ajaxAbort(n,t)},getConnection:function(n){return i.foreverFrame.connections[n]},started:function(t){o(t,r.connectionState.reconnecting,r.connectionState.connected)===!0&&n(t).triggerHandler(e.onReconnect)}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,e=n.signalR.changeState,f=n.signalR.isDisconnecting,i=r.transports._logic;r.transports.longPolling={name:"longPolling",supportsKeepAlive:function(){return!1},reconnectDelay:3e3,start:function(o,s,h){var a=this,v=function(){v=n.noop;o.log("LongPolling connected.");s?s():o.log("WARNING! The client received an init message after reconnecting.")},y=function(n){return h(n)?(o.log("LongPolling failed to connect."),!0):!1},c=o._,l=0,p=function(i){t.clearTimeout(c.reconnectTimeoutId);c.reconnectTimeoutId=null;e(i,r.connectionState.reconnecting,r.connectionState.connected)===!0&&(i.log("Raising the reconnect event"),n(i).triggerHandler(u.onReconnect))},w=36e5;o.pollXhr&&(o.log("Polling xhr requests already exists, aborting."),o.stop());o.messageId=null;c.reconnectTimeoutId=null;c.pollTimeoutId=t.setTimeout(function(){(function e(s,h){var g=s.messageId,nt=g===null,k=!nt,tt=!h,d=i.getUrl(s,a.name,k,tt,!0),b={};(s.messageId&&(b.messageId=s.messageId),s.groupsToken&&(b.groupsToken=s.groupsToken),f(s)!==!0)&&(o.log("Opening long polling request to '"+d+"'."),s.pollXhr=i.ajax(o,{xhrFields:{onprogress:function(){i.markLastMessage(o)}},url:d,type:"POST",contentType:r._.defaultContentType,data:b,timeout:o._.pollTimeout,success:function(r){var h,w=0,u,a;o.log("Long poll complete.");l=0;try{h=o._parseResponse(r)}catch(b){i.handleParseFailure(s,r,b,y,s.pollXhr);return}(c.reconnectTimeoutId!==null&&p(s),h&&(u=i.maximizePersistentResponse(h)),i.processMessages(s,h,v),u&&n.type(u.LongPollDelay)==="number"&&(w=u.LongPollDelay),f(s)!==!0)&&(a=u&&u.ShouldReconnect,!a||i.ensureReconnectingState(s))&&(w>0?c.pollTimeoutId=t.setTimeout(function(){e(s,a)},w):e(s,a))},error:function(f,h){var v=r._.transportError(r.resources.longPollFailed,o.transport,f,s.pollXhr);if(t.clearTimeout(c.reconnectTimeoutId),c.reconnectTimeoutId=null,h==="abort"){o.log("Aborted xhr request.");return}if(!y(v)){if(l++,o.state!==r.connectionState.reconnecting&&(o.log("An error occurred using longPolling. Status = "+h+". Response = "+f.responseText+"."),n(s).triggerHandler(u.onError,[v])),(o.state===r.connectionState.connected||o.state===r.connectionState.reconnecting)&&!i.verifyLastActive(o))return;if(!i.ensureReconnectingState(s))return;c.pollTimeoutId=t.setTimeout(function(){e(s,!0)},a.reconnectDelay)}}}),k&&h===!0&&(c.reconnectTimeoutId=t.setTimeout(function(){p(s)},Math.min(1e3*(Math.pow(2,l)-1),w))))})(o)},250)},lostConnection:function(n){n.pollXhr&&n.pollXhr.abort("lostConnection")},send:function(n,t){i.ajaxSend(n,t)},stop:function(n){t.clearTimeout(n._.pollTimeoutId);t.clearTimeout(n._.reconnectTimeoutId);delete n._.pollTimeoutId;delete n._.reconnectTimeoutId;n.pollXhr&&(n.pollXhr.abort(),n.pollXhr=null,delete n.pollXhr)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n){function r(n){return n+e}function s(n,t,i){for(var f=n.length,u=[],r=0;r<f;r+=1)n.hasOwnProperty(r)&&(u[r]=t.call(i,n[r],r,n));return u}function h(t){return n.isFunction(t)?null:n.type(t)==="undefined"?null:t}function u(n){for(var t in n)if(n.hasOwnProperty(t))return!0;return!1}function f(n,t){var i=n._.invocationCallbacks,r,f;u(i)&&n.log("Clearing hub invocation callbacks with error: "+t+".");n._.invocationCallbackId=0;delete n._.invocationCallbacks;n._.invocationCallbacks={};for(f in i)r=i[f],r.method.call(r.scope,{E:t})}function i(n,t){return new i.fn.init(n,t)}function t(i,r){var u={qs:null,logging:!1,useDefaultPath:!0};return n.extend(u,r),(!i||u.useDefaultPath)&&(i=(i||"")+"/signalr"),new t.fn.init(i,u)}var e=".hubProxy",o=n.signalR;i.fn=i.prototype={init:function(n,t){this.state={};this.connection=n;this.hubName=t;this._={callbackMap:{}}},constructor:i,hasSubscriptions:function(){return u(this._.callbackMap)},on:function(t,i){var u=this,f=u._.callbackMap;return t=t.toLowerCase(),f[t]||(f[t]={}),f[t][i]=function(n,t){i.apply(u,t)},n(u).bind(r(t),f[t][i]),u},off:function(t,i){var e=this,o=e._.callbackMap,f;return t=t.toLowerCase(),f=o[t],f&&(f[i]?(n(e).unbind(r(t),f[i]),delete f[i],u(f)||delete o[t]):i||(n(e).unbind(r(t)),delete o[t])),e},invoke:function(t){var i=this,r=i.connection,e=n.makeArray(arguments).slice(1),c=s(e,h),f={H:i.hubName,M:t,A:c,I:r._.invocationCallbackId},u=n.Deferred(),l=function(f){var e=i._maximizeHubResponse(f),h,s;n.extend(i.state,e.State);e.Progress?u.notifyWith?u.notifyWith(i,[e.Progress.Data]):r._.progressjQueryVersionLogged||(r.log("A hub method invocation progress update was received but the version of jQuery in use ("+n.prototype.jquery+") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications."),r._.progressjQueryVersionLogged=!0):e.Error?(e.StackTrace&&r.log(e.Error+"\n"+e.StackTrace+"."),h=e.IsHubException?"HubException":"Exception",s=o._.error(e.Error,h),s.data=e.ErrorData,r.log(i.hubName+"."+t+" failed to execute. Error: "+s.message),u.rejectWith(i,[s])):(r.log("Invoked "+i.hubName+"."+t),u.resolveWith(i,[e.Result]))};return r._.invocationCallbacks[r._.invocationCallbackId.toString()]={scope:i,method:l},r._.invocationCallbackId+=1,n.isEmptyObject(i.state)||(f.S=i.state),r.log("Invoking "+i.hubName+"."+t),r.send(f),u.promise()},_maximizeHubResponse:function(n){return{State:n.S,Result:n.R,Progress:n.P?{Id:n.P.I,Data:n.P.D}:null,Id:n.I,IsHubException:n.H,Error:n.E,StackTrace:n.T,ErrorData:n.D}}};i.fn.init.prototype=i.fn;t.fn=t.prototype=n.connection();t.fn.init=function(t,i){var e={qs:null,logging:!1,useDefaultPath:!0},u=this;n.extend(e,i);n.signalR.fn.init.call(u,t,e.qs,e.logging);u.proxies={};u._.invocationCallbackId=0;u._.invocationCallbacks={};u.received(function(t){var f,o,e,i,s,h;t&&(typeof t.P!="undefined"?(e=t.P.I.toString(),i=u._.invocationCallbacks[e],i&&i.method.call(i.scope,t)):typeof t.I!="undefined"?(e=t.I.toString(),i=u._.invocationCallbacks[e],i&&(u._.invocationCallbacks[e]=null,delete u._.invocationCallbacks[e],i.method.call(i.scope,t))):(f=this._maximizeClientHubInvocation(t),u.log("Triggering client hub event '"+f.Method+"' on hub '"+f.Hub+"'."),s=f.Hub.toLowerCase(),h=f.Method.toLowerCase(),o=this.proxies[s],n.extend(o.state,f.State),n(o).triggerHandler(r(h),[f.Args])))});u.error(function(n,t){var i,r;t&&(i=t.I,r=u._.invocationCallbacks[i],r&&(u._.invocationCallbacks[i]=null,delete u._.invocationCallbacks[i],r.method.call(r.scope,{E:n})))});u.reconnecting(function(){u.transport&&u.transport.name==="webSockets"&&f(u,"Connection started reconnecting before invocation result was received.")});u.disconnected(function(){f(u,"Connection was disconnected before invocation result was received.")})};t.fn._maximizeClientHubInvocation=function(n){return{Hub:n.H,Method:n.M,Args:n.A,State:n.S}};t.fn._registerSubscribedHubs=function(){var t=this;t._subscribedToHubs||(t._subscribedToHubs=!0,t.starting(function(){var i=[];n.each(t.proxies,function(n){this.hasSubscriptions()&&(i.push({name:n}),t.log("Client subscribed to hub '"+n+"'."))});i.length===0&&t.log("No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to.");t.data=t.json.stringify(i)}))};t.fn.createHubProxy=function(n){n=n.toLowerCase();var t=this.proxies[n];return t||(t=i(this,n),this.proxies[n]=t),this._registerSubscribedHubs(),t};t.fn.init.prototype=t.fn;n.hubConnection=t}(window.jQuery,window),function(n){n.signalR.version="2.2.2"}(window.jQuery); |
| | |
| | | <Reference Include="log4net, Version=2.0.14.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\log4net.2.0.14\lib\net45\log4net.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Microsoft.AspNet.SignalR.Core, Version=2.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.AspNet.SignalR.Core.2.2.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Microsoft.AspNet.SignalR.SystemWeb, Version=2.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.2.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Microsoft.AspNetCore.Http.Abstractions, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.AspNetCore.Http.Abstractions.2.2.0\lib\netstandard2.0\Microsoft.AspNetCore.Http.Abstractions.dll</HintPath> |
| | | </Reference> |
| | |
| | | <Reference Include="Microsoft.Net.Http.Headers, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.Net.Http.Headers.2.2.0\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Microsoft.Owin, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.Owin.4.0.0\lib\net451\Microsoft.Owin.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Microsoft.Owin.Host.SystemWeb, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.4.0.0\lib\net451\Microsoft.Owin.Host.SystemWeb.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Microsoft.Owin.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Microsoft.Owin.Security.4.0.0\lib\net451\Microsoft.Owin.Security.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath> |
| | | </Reference> |
| | |
| | | </Reference> |
| | | <Reference Include="NPOI.OpenXmlFormats, Version=2.5.6.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\NPOI.2.5.6\lib\net45\NPOI.OpenXmlFormats.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\Pipelines.Sockets.Unofficial.2.2.2\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath> |
| | |
| | | <Compile Include="App_Start\BundleConfig.cs" /> |
| | | <Compile Include="App_Start\FilterConfig.cs" /> |
| | | <Compile Include="App_Start\RouteConfig.cs" /> |
| | | <Compile Include="App_Start\Startup.cs" /> |
| | | <Compile Include="App_Start\SwaggerConfig.cs" /> |
| | | <Compile Include="App_Start\SwaggerControllerDescProvider.cs" /> |
| | | <Compile Include="App_Start\WebApiConfig.cs" /> |
| | |
| | | <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" /> |
| | | <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" /> |
| | | <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" /> |
| | | <Compile Include="Hubs\ChatHub.cs" /> |
| | | <Compile Include="Controllers\AppDeviceManageController.cs" /> |
| | | <Compile Include="Controllers\BasicSettingController.cs" /> |
| | | <Compile Include="Controllers\DeviceManagerController.cs" /> |
| | |
| | | <Content Include="Global.asax" /> |
| | | <Content Include="Grid\grwebapp.js" /> |
| | | <Content Include="Grid\webapp-ws-tutorial.htm" /> |
| | | <Content Include="Hubs\HubsMessage1.html" /> |
| | | <Content Include="Hubs\HubsMessage.html" /> |
| | | <Content Include="Image\1.png" /> |
| | | <Content Include="Image\2.png" /> |
| | | <Content Include="Image\3.png" /> |
| | |
| | | <Content Include="Scripts\jquery-3.4.1.min.js" /> |
| | | <Content Include="Scripts\jquery-3.4.1.slim.js" /> |
| | | <Content Include="Scripts\jquery-3.4.1.slim.min.js" /> |
| | | <Content Include="Scripts\jquery.signalR-2.2.2.js" /> |
| | | <Content Include="Scripts\jquery.signalR-2.2.2.min.js" /> |
| | | <Content Include="Scripts\modernizr-2.8.3.js" /> |
| | | <Content Include="Scripts\swagger_lang.js" /> |
| | | <Content Include="Web.config" /> |
| | |
| | | <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | </assemblyBinding> |
| | | </runtime> |
| | | <system.codedom> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <doc> |
| | | <assembly> |
| | | <name>Microsoft.AspNet.SignalR.Core</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager"> |
| | | <summary> |
| | | Default <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager"/> implementation. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager"/> class. |
| | | </summary> |
| | | <param name="resolver">The <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetConnectionContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetConnection(System.Type)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <param name="type">Type of the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext``2"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext``1(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IMemoryPool.AllocSegment(System.Int32)"> |
| | | <summary> |
| | | Acquires a sub-segment of a larger memory allocation. Used for async sends of write-behind |
| | | buffers to reduce number of array segments pinned |
| | | </summary> |
| | | <param name = "minimumSize">The smallest length of the ArraySegment.Count that may be returned</param> |
| | | <returns>An array segment which is a sub-block of a larger allocation</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IMemoryPool.FreeSegment(System.ArraySegment{System.Byte})"> |
| | | <summary> |
| | | Frees a sub-segment of a larger memory allocation produced by AllocSegment. The original ArraySegment |
| | | must be frees exactly once and must have the same offset and count that was returned by the Alloc. |
| | | If a segment is not freed it won't be re-used and has the same effect as a memory leak, so callers must be |
| | | implemented exactly correctly. |
| | | </summary> |
| | | <param name = "segment">The sub-block that was originally returned by a call to AllocSegment.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.IBinaryWriter"> |
| | | <summary> |
| | | Implemented on anything that has the ability to write raw binary data |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager"> |
| | | <summary> |
| | | Provides access to performance counters. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.Initialize(System.String,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Initializes the performance counters. |
| | | </summary> |
| | | <param name="instanceName">The host instance name.</param> |
| | | <param name="hostShutdownToken">The CancellationToken representing the host shutdown.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.LoadCounter(System.String,System.String,System.String,System.Boolean)"> |
| | | <summary> |
| | | Loads a performance counter. |
| | | </summary> |
| | | <param name="categoryName">The category name.</param> |
| | | <param name="counterName">The counter name.</param> |
| | | <param name="instanceName">The instance name.</param> |
| | | <param name="isReadOnly">Whether the counter is read-only.</param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsConnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Connect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsReconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Reconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsDisconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Disconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentForeverFrame"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using ForeverFrame transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentLongPolling"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using LongPolling transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentServerSentEvents"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using ServerSentEvents transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentWebSockets"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using WebSockets transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by connections (server to client) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesSentTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by connections (server to client) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by connections (server to client) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesSentPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages sent by connections (client to server) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by subscribers since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by a subscribers per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutMessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by the scaleout message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesPublishedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages published to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesPublishedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages published to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusSubscribersCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the current number of subscribers to the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusSubscribersTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of subscribers to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusSubscribersPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of new subscribers to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusAllocatedWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers allocated to deliver messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusBusyWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers currently busy delivering messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusTopicsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing representing the current number of topics in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsAllTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of all errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsAllPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of all errors processed per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubResolutionTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub resolution errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubResolutionPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub resolution errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubInvocationTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub invocation errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubInvocationPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub invocation errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsTransportTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of transport errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsTransportPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of transport errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutStreamCountTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutStreamCountOpen"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the open state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutStreamCountBuffering"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the buffering state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutErrorsTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of scaleout errors since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutErrorsPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of scaleout errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutSendQueueLength"> |
| | | <summary> |
| | | Gets the performance counter representing the current scaleout send queue length. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager"> |
| | | <summary> |
| | | Manages performance counters using Windows performance counters. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.CategoryName"> |
| | | <summary> |
| | | The performance counter category name for SignalR counters. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.#ctor(Microsoft.AspNet.SignalR.Tracing.ITraceManager)"> |
| | | <summary> |
| | | Creates a new instance. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsConnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Connect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsReconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Reconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsDisconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Disconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentForeverFrame"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the ForeverFrame transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentLongPolling"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the LongPolling transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentServerSentEvents"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the ServerSentEvents transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentWebSockets"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the WebSockets transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the toal number of messages received by connections (server to client) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesSentTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages sent by connections (client to server) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by connections (server to client) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesSentPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages sent by connections (client to server) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by subscribers since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by a subscribers per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutMessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by the scaleout message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesPublishedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages published to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesPublishedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages published to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusSubscribersCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the current number of subscribers to the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusSubscribersTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of subscribers to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusSubscribersPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of new subscribers to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusAllocatedWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers allocated to deliver messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusBusyWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers currently busy delivering messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusTopicsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing representing the current number of topics in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsAllTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of all errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsAllPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of all errors processed per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubResolutionTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub resolution errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubResolutionPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub resolution errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubInvocationTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub invocation errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubInvocationPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub invocation errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsTransportTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of transport errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsTransportPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of transport errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutStreamCountTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutStreamCountOpen"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the open state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutStreamCountBuffering"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the buffering state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutErrorsTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of scaleout errors since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutErrorsPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of scaleout errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutSendQueueLength"> |
| | | <summary> |
| | | Gets the performance counter representing the current scaleout send queue length. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.Initialize(System.String,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Initializes the performance counters. |
| | | </summary> |
| | | <param name="instanceName">The host instance name.</param> |
| | | <param name="hostShutdownToken">The CancellationToken representing the host shutdown.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.Disposer"> |
| | | <summary> |
| | | Helper class to manage disposing a resource at an arbirtary time |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.SafeCancellationTokenSource"> |
| | | <summary> |
| | | Thread safe cancellation token source. Allows the following: |
| | | - Cancel will no-op if the token is disposed. |
| | | - Dispose may be called after Cancel. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager"> |
| | | <summary> |
| | | Provides access to hubs and persistent connections references. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext``2"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext``1(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetConnectionContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"> |
| | | <summary> |
| | | Minifies a string in a way that can be reversed by this instance of <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier"/>. |
| | | </summary> |
| | | <param name="value">The string to be minified</param> |
| | | <returns>A minified representation of the <paramref name="value"/> without the following characters:,|\</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Unminify(System.String)"> |
| | | <summary> |
| | | Reverses a <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> call that was executed at least once previously on this instance of |
| | | <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier"/> without any subsequent calls to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.RemoveUnminified(System.String)"/> sharing the |
| | | same argument as the <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> call that returned <paramref name="value"/>. |
| | | </summary> |
| | | <param name="value"> |
| | | A minified string that was returned by a previous call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/>. |
| | | </param> |
| | | <returns> |
| | | The argument of all previous calls to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> that returned <paramref name="value"/>. |
| | | If every call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> on this instance of <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier"/> has never |
| | | returned <paramref name="value"/> or if the most recent call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> that did |
| | | return <paramref name="value"/> was followed by a call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.RemoveUnminified(System.String)"/> sharing |
| | | the same argument, <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Unminify(System.String)"/> may return null but must not throw. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.RemoveUnminified(System.String)"> |
| | | <summary> |
| | | A call to this function indicates that any future attempt to unminify strings that were previously minified |
| | | from <paramref name="value"/> may be met with a null return value. This provides an opportunity clean up |
| | | any internal data structures that reference <paramref name="value"/>. |
| | | </summary> |
| | | <param name="value">The string that may have previously have been minified.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.UrlDecoder"> |
| | | <summary> |
| | | Helpers for decoding URI query components. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.AckSubscriber"> |
| | | <summary> |
| | | A singleton that subscribes to all ACKs sent over the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Messaging.IMessageBus"/> and |
| | | triggers any corresponding ACKs on the <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IAckHandler"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Configuration.ConfigurationExtensions.KeepAliveTimeout(Microsoft.AspNet.SignalR.Configuration.IConfigurationManager)"> |
| | | <summary> |
| | | The amount of time the client should wait without seeing a keep alive before trying to reconnect. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Configuration.ConfigurationExtensions.HeartbeatInterval(Microsoft.AspNet.SignalR.Configuration.IConfigurationManager)"> |
| | | <summary> |
| | | The interval between successively checking connection states. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Configuration.ConfigurationExtensions.TopicTtl(Microsoft.AspNet.SignalR.Configuration.IConfigurationManager)"> |
| | | <summary> |
| | | The amount of time a Topic should stay in memory after its last subscriber is removed. |
| | | </summary> |
| | | <param name="config"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager"> |
| | | <summary> |
| | | Provides access to server configuration. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.TransportConnectTimeout"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time a client should allow to connect before falling |
| | | back to another transport or failing. |
| | | The default value is 5 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.ConnectionTimeout"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time to leave a connection open before timing out. |
| | | The default value is 110 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time to wait after a connection goes away before raising the disconnect event. |
| | | The default value is 30 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.KeepAlive"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time between send keep alive messages. |
| | | If enabled, this value must be at least two seconds. Set to null to disable. |
| | | The default value is 10 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DefaultMessageBufferSize"> |
| | | <summary> |
| | | Gets or sets the number of messages to buffer for a specific signal. |
| | | The default value is 1000. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.MaxIncomingWebSocketMessageSize"> |
| | | <summary> |
| | | Gets or sets the maximum size in bytes of messages sent from client to the server via WebSockets. |
| | | Set to null to disable this limit. |
| | | The default value is 65536 or 64 KB. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.LongPollDelay"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing tell the client to wait before restablishing a |
| | | long poll connection after data is sent from the server. |
| | | The default value is 0. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.MaxScaleoutMappingsPerStream"> |
| | | <summary> |
| | | Gets or sets the maximum number of scaleout mappings per scaleout stream stored on the server. |
| | | The default value is 65535 |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionConfiguration.Resolver"> |
| | | <summary> |
| | | The dependency resolver to use for the hub connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionConfiguration.EnableJSONP"> |
| | | <summary> |
| | | Gets of sets a boolean that determines if JSONP is enabled. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.IResponse"> |
| | | <summary> |
| | | Represents a connection to the client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IResponse.CancellationToken"> |
| | | <summary> |
| | | Gets a cancellation token that represents the client's lifetime. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IResponse.StatusCode"> |
| | | <summary> |
| | | Gets or sets the status code of the response. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IResponse.ContentType"> |
| | | <summary> |
| | | Gets or sets the content type of the response. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.IResponse.Write(System.ArraySegment{System.Byte})"> |
| | | <summary> |
| | | Writes buffered data. |
| | | </summary> |
| | | <param name="data">The data to write to the buffer.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.IResponse.Flush"> |
| | | <summary> |
| | | Flushes the buffered response to the client. |
| | | </summary> |
| | | <returns>A task that represents when the data has been flushed.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.IWebSocket"> |
| | | <summary> |
| | | Represents a web socket. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IWebSocket.OnMessage"> |
| | | <summary> |
| | | Invoked when data is sent over the websocket |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IWebSocket.OnClose"> |
| | | <summary> |
| | | Invoked when the websocket closes |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IWebSocket.OnError"> |
| | | <summary> |
| | | Invoked when there is an error |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.IWebSocket.Send(System.ArraySegment{System.Byte})"> |
| | | <summary> |
| | | Sends data over the websocket. |
| | | </summary> |
| | | <param name="message">The value to send.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the send is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.ResponseExtensions"> |
| | | <summary> |
| | | Extension methods for <see cref="T:Microsoft.AspNet.SignalR.Hosting.IResponse"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.ResponseExtensions.End(Microsoft.AspNet.SignalR.Hosting.IResponse,System.String)"> |
| | | <summary> |
| | | Closes the connection to a client with optional data. |
| | | </summary> |
| | | <param name="response">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.IResponse"/>.</param> |
| | | <param name="data">The data to write to the connection.</param> |
| | | <returns>A task that represents when the connection is closed.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory"> |
| | | <summary> |
| | | Responsible for creating <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> instances. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Creates a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory"/> class. |
| | | </summary> |
| | | <param name="resolver">The dependency resolver to use for when creating the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory.CreateInstance(System.Type)"> |
| | | <summary> |
| | | Creates an instance of the specified type using the dependency resolver or the type's default constructor. |
| | | </summary> |
| | | <param name="connectionType">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to create.</param> |
| | | <returns>An instance of a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. </returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubBase"> |
| | | <summary> |
| | | Provides methods that communicate with SignalR connections that connected to a <see cref="T:Microsoft.AspNet.SignalR.Hub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubBase.Microsoft#AspNet#SignalR#Hubs#IHub#Clients"> |
| | | <summary> |
| | | Gets a dynamic object that represents all clients connected to this hub (not hub instance). |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubBase.Context"> |
| | | <summary> |
| | | Provides information about the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubBase.Groups"> |
| | | <summary> |
| | | The group manager for this hub instance. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubBase.OnDisconnected(System.Boolean)"> |
| | | <summary> |
| | | Called when a connection disconnects from this hub gracefully or due to a timeout. |
| | | </summary> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the connection has been lost for longer than the |
| | | <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"/>. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubBase.OnConnected"> |
| | | <summary> |
| | | Called when the connection connects to this hub instance. |
| | | </summary> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubBase.OnReconnected"> |
| | | <summary> |
| | | Called when the connection reconnects to this hub instance. |
| | | </summary> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.AllExcept(System.String[])"> |
| | | <summary> |
| | | Returns a dynamic representation of all clients except the calling client ones specified. |
| | | </summary> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A dynamic representation of all clients except the calling client ones specified.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Client(System.String)"> |
| | | <summary> |
| | | Returns a dynamic representation of the connection with the specified connectionid. |
| | | </summary> |
| | | <param name="connectionId">The connection id</param> |
| | | <returns>A dynamic representation of the specified client.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Clients(System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Returns a dynamic representation of the connections with the specified connectionids. |
| | | </summary> |
| | | <param name="connectionIds">The connection ids.</param> |
| | | <returns>A dynamic representation of the specified clients.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Group(System.String,System.String[])"> |
| | | <summary> |
| | | Returns a dynamic representation of the specified group. |
| | | </summary> |
| | | <param name="groupName">The name of the group</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A dynamic representation of the specified group.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Groups(System.Collections.Generic.IList{System.String},System.String[])"> |
| | | <summary> |
| | | Returns a dynamic representation of the specified groups. |
| | | </summary> |
| | | <param name="groupNames">The names of the groups.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A dynamic representation of the specified groups.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubConnectionContext`1"> |
| | | <summary> |
| | | Encapsulates all information about a SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ExceptionContext.Error"> |
| | | <summary> |
| | | The exception to be sent to the calling client. |
| | | This will be overridden by a generic Exception unless Error is a <see cref="T:Microsoft.AspNet.SignalR.HubException"/> |
| | | or <see cref="P:Microsoft.AspNet.SignalR.HubConfiguration.EnableDetailedErrors"/> is set to true. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ExceptionContext.Result"> |
| | | <summary> |
| | | The value to return in lieu of throwing Error. Whenever Result is set, Error will be set to null. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubCallerConnectionContext`1"> |
| | | <summary> |
| | | Encapsulates all information about an individual SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"> |
| | | <summary> |
| | | Encapsulates all information about an individual SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.#ctor"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.#ctor(Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker,Microsoft.AspNet.SignalR.IConnection,System.String,System.String,Microsoft.AspNet.SignalR.Hubs.StateChangeTracker)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"/>. |
| | | </summary> |
| | | <param name="pipelineInvoker">The pipeline invoker.</param> |
| | | <param name="connection">The connection.</param> |
| | | <param name="hubName">The hub name.</param> |
| | | <param name="connectionId">The connection id.</param> |
| | | <param name="tracker">The connection hub state.</param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.Others"> |
| | | <summary> |
| | | All connected clients except the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.Caller"> |
| | | <summary> |
| | | Represents the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.CallerState"> |
| | | <summary> |
| | | Represents the calling client's state. This should be used when the state is innaccessible |
| | | via the <see cref="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.Caller"/> property (such as in VB.NET or in typed Hubs). |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.OthersInGroup(System.String)"> |
| | | <summary> |
| | | Returns a dynamic representation of all clients in a group except the calling client. |
| | | </summary> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A dynamic representation of all clients in a group except the calling client.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.OthersInGroups(System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Returns a dynamic representation of all clients in the specified groups except the calling client. |
| | | </summary> |
| | | <param name="groupNames">The name of the groups</param> |
| | | <returns>A dynamic representation of all clients in a group except the calling client.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"> |
| | | <summary> |
| | | This module is added the the HubPipeline by default. |
| | | |
| | | Hub level attributes that implement <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"/> such as <see cref="T:Microsoft.AspNet.SignalR.AuthorizeAttribute"/> are applied to determine |
| | | whether to allow potential clients to receive messages sent from that hub using a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubContext"/> or a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"/> |
| | | All applicable hub attributes must allow hub connection for the connection to be authorized. |
| | | |
| | | Hub and method level attributes that implement <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"/> such as <see cref="T:Microsoft.AspNet.SignalR.AuthorizeAttribute"/> are applied |
| | | to determine whether to allow callers to invoke hub methods. |
| | | All applicable hub level AND method level attributes must allow hub method invocation for the invocation to be authorized. |
| | | |
| | | Optionally, this module may be instantiated with <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"/> and <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"/> |
| | | authorizers that will be applied globally to all hubs and hub methods. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation"> |
| | | <summary> |
| | | A description of a client-side hub method invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.Hub"> |
| | | <summary> |
| | | The name of the hub that the method being invoked belongs to. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.Method"> |
| | | <summary> |
| | | The name of the client-side hub method be invoked. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.Args"> |
| | | <summary> |
| | | The argument list the client-side hub method will be called with. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.State"> |
| | | <summary> |
| | | A key-value store representing the hub state on the server that has changed since the last time the hub |
| | | state was sent to the client. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule"> |
| | | <summary> |
| | | Common base class to simplify the implementation of IHubPipelineModules. |
| | | A module can intercept and customize various stages of hub processing such as connecting, reconnecting, disconnecting, |
| | | invoking server-side hub methods, invoking client-side hub methods, authorizing hub clients and rejoining hub groups. |
| | | A module can be activated by calling <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"/>. |
| | | The combined modules added to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> are invoked via the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"/> |
| | | interface. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"> |
| | | <summary> |
| | | Wraps a function that invokes a server-side hub method. Even if a client has not been authorized to connect |
| | | to a hub, it will still be authorized to invoke server-side methods on that hub unless it is prevented in |
| | | <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"/> by not executing the invoke parameter. |
| | | </summary> |
| | | <param name="invoke">A function that invokes a server-side hub method.</param> |
| | | <returns>A wrapped function that invokes a server-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client connects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnConnected method being invoked. |
| | | </summary> |
| | | <param name="connect">A function to be called when a client connects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client connects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildReconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnReconnected method being invoked. |
| | | </summary> |
| | | <param name="reconnect">A function to be called when a client reconnects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client reconnects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildDisconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client was connected to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnDisconnected method being invoked. |
| | | </summary> |
| | | <param name="disconnect"> |
| | | <para>A task-returning function to be called when a client disconnects from a hub.</para> |
| | | <para>This function takes two parameters:</para> |
| | | <para>1. The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> is being disconnected from.</para> |
| | | <para>2. A boolean, stopCalled, that is true if stop was called on the client and false if the client timed out. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout.</para> |
| | | </param> |
| | | <returns>A wrapped function to be called when a client disconnects from a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildAuthorizeConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Boolean})"> |
| | | <summary> |
| | | Wraps a function to be called before a client subscribes to signals belonging to the hub described by the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. By default, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> will look for attributes on the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> to help determine if the client is authorized to subscribe to method invocations for the |
| | | described hub. |
| | | The function returns true if the client is authorized to subscribe to client-side hub method |
| | | invocations; false, otherwise. |
| | | </summary> |
| | | <param name="authorizeConnect"> |
| | | A function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </param> |
| | | <returns> |
| | | A wrapped function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildRejoiningGroups(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String}})"> |
| | | <summary> |
| | | Wraps a function that determines which of the groups belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/> |
| | | the client should be allowed to rejoin. |
| | | By default, clients will rejoin all the groups they were in prior to reconnecting. |
| | | </summary> |
| | | <param name="rejoiningGroups">A function that determines which groups the client should be allowed to rejoin.</param> |
| | | <returns>A wrapped function that determines which groups the client should be allowed to rejoin.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildOutgoing(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that invokes a client-side hub method. |
| | | </summary> |
| | | <param name="send">A function that invokes a client-side hub method.</param> |
| | | <returns>A wrapped function that invokes a client-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeAuthorizeConnect(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | This method is called before the AuthorizeConnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> |
| | | are executed. If this returns false, then those later-added modules will not run and the client will not be allowed |
| | | to subscribe to client-side invocations of methods belonging to the hub defined by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. |
| | | </summary> |
| | | <param name="hubDescriptor">A description of the hub the client is trying to subscribe to.</param> |
| | | <param name="request">The connect request of the client trying to subscribe to the hub.</param> |
| | | <returns>true, if the client is authorized to connect to the hub, false otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeConnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called before the connect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"/> method will |
| | | not be run. |
| | | </summary> |
| | | <param name="hub">The hub the client has connected to.</param> |
| | | <returns> |
| | | true, if the connect components of later added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"/> method should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterConnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called after the connect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed and after <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"/> is executed, if at all. |
| | | </summary> |
| | | <param name="hub">The hub the client has connected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeReconnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called before the reconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"/> method will |
| | | not be run. |
| | | </summary> |
| | | <param name="hub">The hub the client has reconnected to.</param> |
| | | <returns> |
| | | true, if the reconnect components of later added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"/> method should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterReconnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called after the reconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed and after <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"/> is executed, if at all. |
| | | </summary> |
| | | <param name="hub">The hub the client has reconnected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeOutgoing(Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext)"> |
| | | <summary> |
| | | This method is called before the outgoing components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the client-side hub method invocation(s) will not |
| | | be executed. |
| | | </summary> |
| | | <param name="context">A description of the client-side hub method invocation.</param> |
| | | <returns> |
| | | true, if the outgoing components of later added modules and the client-side hub method invocation(s) should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterOutgoing(Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext)"> |
| | | <summary> |
| | | This method is called after the outgoing components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. This does not mean that all the clients have received the hub method invocation, but it does indicate indicate |
| | | a hub invocation message has successfully been published to a message bus. |
| | | </summary> |
| | | <param name="context">A description of the client-side hub method invocation.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeDisconnect(Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean)"> |
| | | <summary> |
| | | This method is called before the disconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"/> method will |
| | | not be run. |
| | | </summary> |
| | | <param name="hub">The hub the client has disconnected from.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the client timed out. Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | <returns> |
| | | true, if the disconnect components of later added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"/> method should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterDisconnect(Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean)"> |
| | | <summary> |
| | | This method is called after the disconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed and after <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"/> is executed, if at all. |
| | | </summary> |
| | | <param name="hub">The hub the client has disconnected from.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the client timed out. Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeIncoming(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | This method is called before the incoming components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the server-side hub method invocation will not |
| | | be executed. Even if a client has not been authorized to connect to a hub, it will still be authorized to invoke |
| | | server-side methods on that hub unless it is prevented in <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"/> by not |
| | | executing the invoke parameter or prevented in <see cref="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeIncoming(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"/> by returning false. |
| | | </summary> |
| | | <param name="context">A description of the server-side hub method invocation.</param> |
| | | <returns> |
| | | true, if the incoming components of later added modules and the server-side hub method invocation should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterIncoming(System.Object,Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | This method is called after the incoming components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> |
| | | and the server-side hub method have completed execution. |
| | | </summary> |
| | | <param name="result">The return value of the server-side hub method</param> |
| | | <param name="context">A description of the server-side hub method invocation.</param> |
| | | <returns>The possibly new or updated return value of the server-side hub method</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnIncomingError(Microsoft.AspNet.SignalR.Hubs.ExceptionContext,Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | This is called when an uncaught exception is thrown by a server-side hub method or the incoming component of a |
| | | module added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/>. Observing the exception using this method will not prevent |
| | | it from bubbling up to other modules. |
| | | </summary> |
| | | <param name="exceptionContext"> |
| | | Represents the exception that was thrown during the server-side invocation. |
| | | It is possible to change the error or set a result using this context. |
| | | </param> |
| | | <param name="invokerContext">A description of the server-side hub method invocation.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"> |
| | | <summary> |
| | | Interface to be implemented by <see cref="T:System.Attribute"/>s that can authorize client to connect to a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection.AuthorizeHubConnection(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Given a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubCallerContext"/>, determine whether client is authorized to connect to <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <param name="hubDescriptor">Description of the hub client is attempting to connect to.</param> |
| | | <param name="request">The connection request from the client.</param> |
| | | <returns>true if the caller is authorized to connect to the hub; otherwise, false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"> |
| | | <summary> |
| | | Interface to be implemented by <see cref="T:System.Attribute"/>s that can authorize the invocation of <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> methods. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation.AuthorizeHubMethodInvocation(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Boolean)"> |
| | | <summary> |
| | | Given a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"/>, determine whether client is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method. |
| | | </summary> |
| | | <param name="hubIncomingInvokerContext">An <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"/> providing details regarding the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method invocation.</param> |
| | | <param name="appliesToMethod">Indicates whether the interface instance is an attribute applied directly to a method.</param> |
| | | <returns>true if the caller is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method; otherwise, false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext"> |
| | | <summary> |
| | | A description of a client-side hub method invocation originating from the server. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Connection"> |
| | | <summary> |
| | | The <see cref="T:Microsoft.AspNet.SignalR.IConnection"/>, if any, corresponding to the client that invoked the server-side hub method |
| | | that is invoking the client-side hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Invocation"> |
| | | <summary> |
| | | A description of the method call to be made on the client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Signal"> |
| | | <summary> |
| | | The signal (ConnectionId, hub type name or hub type name + "." + group name) belonging to clients that |
| | | receive the method invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Signals"> |
| | | <summary> |
| | | The signals (ConnectionId, hub type name or hub type name + "." + group name) belonging to clients that |
| | | receive the method invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.ExcludedSignals"> |
| | | <summary> |
| | | The signals (ConnectionId, hub type name or hub type name + "." + group name) belonging to clients that should |
| | | not receive the method invocation regardless of the <see cref="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Signal"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"> |
| | | <summary> |
| | | Implementations of this interface are responsible for executing operation required to complete various stages |
| | | hub processing such as connecting, reconnecting, disconnecting, invoking server-side hub methods, invoking |
| | | client-side hub methods, authorizing hub clients and rejoining hub groups. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Invoke(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | Invokes a server-side hub method. |
| | | </summary> |
| | | <param name="context">A description of the server-side hub method invocation.</param> |
| | | <returns>An asynchronous operation giving the return value of the server-side hub method invocation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Send(Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext)"> |
| | | <summary> |
| | | Invokes a client-side hub method. |
| | | </summary> |
| | | <param name="context">A description of the client-side hub method invocation.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Connect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | To be called when a client connects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client |
| | | connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s OnConnected method being invoked. |
| | | </summary> |
| | | <param name="hub">A <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client is connected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Reconnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | To be called when a client reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client |
| | | connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s OnReconnected method being invoked. |
| | | </summary> |
| | | <param name="hub">A <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client is reconnected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Disconnect(Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean)"> |
| | | <summary> |
| | | To be called when a client disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client |
| | | was connected to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s OnDisconnected method being invoked. |
| | | </summary> |
| | | <param name="hub">A <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client was disconnected from.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the client timed out. Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.AuthorizeConnect(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | To be called before a client subscribes to signals belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. |
| | | By default, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> will look for attributes on the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> to help determine if |
| | | the client is authorized to subscribe to method invocations for the described hub. |
| | | </summary> |
| | | <param name="hubDescriptor">A description of the hub the client is attempting to connect to.</param> |
| | | <param name="request"> |
| | | The connect request being made by the client which should include the client's |
| | | <see cref="T:System.Security.Principal.IPrincipal"/> User. |
| | | </param> |
| | | <returns>true, if the client is authorized to subscribe to client-side hub method invocations; false, otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.RejoiningGroups(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | This method determines which of the groups belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/> the client should be |
| | | allowed to rejoin. |
| | | By default, clients that are reconnecting to the server will be removed from all groups they may have previously been a member of, |
| | | because untrusted clients may claim to be a member of groups they were never authorized to join. |
| | | </summary> |
| | | <param name="hubDescriptor">A description of the hub for which the client is attempting to rejoin groups.</param> |
| | | <param name="request">The reconnect request being made by the client that is attempting to rejoin groups.</param> |
| | | <param name="groups"> |
| | | The list of groups belonging to the relevant hub that the client claims to have been a member of before the reconnect. |
| | | </param> |
| | | <returns>A list of groups the client is allowed to rejoin.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubResponse"> |
| | | <summary> |
| | | The response returned from an incoming hub request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.State"> |
| | | <summary> |
| | | The changes made the the round tripped state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Result"> |
| | | <summary> |
| | | The result of the invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Id"> |
| | | <summary> |
| | | The id of the operation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Progress"> |
| | | <summary> |
| | | The progress update of the invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.IsHubException"> |
| | | <summary> |
| | | Indicates whether the Error is a see <see cref="T:Microsoft.AspNet.SignalR.HubException"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Error"> |
| | | <summary> |
| | | The exception that occurs as a result of invoking the hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.StackTrace"> |
| | | <summary> |
| | | The stack trace of the exception that occurs as a result of invoking the hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.ErrorData"> |
| | | <summary> |
| | | Extra error data contained in the <see cref="T:Microsoft.AspNet.SignalR.HubException"/> |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IClientProxy"> |
| | | <summary> |
| | | A server side proxy for the client side hub. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IClientProxy.Invoke(System.String,System.Object[])"> |
| | | <summary> |
| | | Invokes a method on the connection(s) represented by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IClientProxy"/> instance. |
| | | </summary> |
| | | <param name="method">name of the method to invoke</param> |
| | | <param name="args">argumetns to pass to the client</param> |
| | | <returns>A task that represents when the data has been sent to the client.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubRequestParser"> |
| | | <summary> |
| | | Handles parsing incoming requests through the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubRequestParser.Parse(System.String,Newtonsoft.Json.JsonSerializer)"> |
| | | <summary> |
| | | Parses the incoming hub payload into a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubRequest"/>. |
| | | </summary> |
| | | <param name="data">The raw hub payload.</param> |
| | | <param name="serializer">The JsonSerializer used to parse the data.</param> |
| | | <returns>The resulting <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubRequest"/>.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.Descriptor.Name"> |
| | | <summary> |
| | | Name of Descriptor. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.Descriptor.NameSpecified"> |
| | | <summary> |
| | | Flags whether the name was specified. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.StateChangeTracker"> |
| | | <summary> |
| | | A change tracking dictionary. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"> |
| | | <summary> |
| | | A description of a server-side hub method invocation originating from a client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.Hub"> |
| | | <summary> |
| | | A hub instance that contains the invoked method as a member. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.MethodDescriptor"> |
| | | <summary> |
| | | A description of the method being invoked by the client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.Args"> |
| | | <summary> |
| | | The arguments to be passed to the invoked method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.StateTracker"> |
| | | <summary> |
| | | A key-value store representing the hub state on the client at the time of the invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"> |
| | | <summary> |
| | | A collection of modules that can intercept and customize various stages of hub processing such as connecting, |
| | | reconnecting, disconnecting, invoking server-side hub methods, invoking client-side hub methods, authorizing |
| | | hub clients and rejoining hub groups. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"> |
| | | <summary> |
| | | Adds an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule"/> to the hub pipeline. Modules added to the pipeline first will wrap |
| | | modules that are added to the pipeline later. All modules must be added to the pipeline before any methods |
| | | on the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"/> are invoked. |
| | | </summary> |
| | | <param name="pipelineModule"> |
| | | A module that may intercept and customize various stages of hub processing such as connecting, |
| | | reconnecting, disconnecting, invoking server-side hub methods, invoking client-side hub methods, authorizing |
| | | hub clients and rejoining hub groups. |
| | | </param> |
| | | <returns> |
| | | The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> itself with the newly added module allowing |
| | | <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"/> calls to be chained. |
| | | This method mutates the pipeline it is invoked on so it is not necessary to store its result. |
| | | </returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule"> |
| | | <summary> |
| | | An <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule"/> can intercept and customize various stages of hub processing such as connecting, |
| | | reconnecting, disconnecting, invoking server-side hub methods, invoking client-side hub methods, authorizing hub |
| | | clients and rejoining hub groups. |
| | | Modules can be be activated by calling <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"/>. |
| | | The combined modules added to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> are invoked via the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"/> |
| | | interface. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"> |
| | | <summary> |
| | | Wraps a function that invokes a server-side hub method. Even if a client has not been authorized to connect |
| | | to a hub, it will still be authorized to invoke server-side methods on that hub unless it is prevented in |
| | | <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"/> by not executing the invoke parameter. |
| | | </summary> |
| | | <param name="invoke">A function that invokes a server-side hub method.</param> |
| | | <returns>A wrapped function that invokes a server-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildOutgoing(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that invokes a client-side hub method. |
| | | </summary> |
| | | <param name="send">A function that invokes a client-side hub method.</param> |
| | | <returns>A wrapped function that invokes a client-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client connects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnConnected method being invoked. |
| | | </summary> |
| | | <param name="connect">A function to be called when a client connects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client connects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildReconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnReconnected method being invoked. |
| | | </summary> |
| | | <param name="reconnect">A function to be called when a client reconnects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client reconnects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildDisconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client was connected to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnDisconnected method being invoked. |
| | | </summary> |
| | | <param name="disconnect"> |
| | | <para>A task-returning function to be called when a client disconnects from a hub.</para> |
| | | <para>This function takes two parameters:</para> |
| | | <para>1. The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> is being disconnected from.</para> |
| | | <para>2. A boolean, stopCalled, that is true if stop was called on the client and false if the client timed out. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout.</para> |
| | | </param> |
| | | <returns>A wrapped function to be called when a client disconnects from a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildAuthorizeConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Boolean})"> |
| | | <summary> |
| | | Wraps a function to be called before a client subscribes to signals belonging to the hub described by the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. By default, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> will look for attributes on the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> to help determine if the client is authorized to subscribe to method invocations for the |
| | | described hub. |
| | | The function returns true if the client is authorized to subscribe to client-side hub method |
| | | invocations; false, otherwise. |
| | | </summary> |
| | | <param name="authorizeConnect"> |
| | | A function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </param> |
| | | <returns> |
| | | A wrapped function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildRejoiningGroups(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String}})"> |
| | | <summary> |
| | | Wraps a function that determines which of the groups belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/> |
| | | the client should be allowed to rejoin. |
| | | By default, clients will rejoin all the groups they were in prior to reconnecting. |
| | | </summary> |
| | | <param name="rejoiningGroups">A function that determines which groups the client should be allowed to rejoin.</param> |
| | | <returns>A wrapped function that determines which groups the client should be allowed to rejoin.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.DefaultParameterResolver.ResolveParameter(Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor,Microsoft.AspNet.SignalR.Json.IJsonValue)"> |
| | | <summary> |
| | | Resolves a parameter value based on the provided object. |
| | | </summary> |
| | | <param name="descriptor">Parameter descriptor.</param> |
| | | <param name="value">Value to resolve the parameter value from.</param> |
| | | <returns>The parameter value.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.DefaultParameterResolver.ResolveMethodParameters(Microsoft.AspNet.SignalR.Hubs.MethodDescriptor,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Resolves method parameter values based on provided objects. |
| | | </summary> |
| | | <param name="method">Method descriptor.</param> |
| | | <param name="values">List of values to resolve parameter values from.</param> |
| | | <returns>Array of parameter values.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IParameterResolver"> |
| | | <summary> |
| | | Describes a parameter resolver for resolving parameter-matching values based on provided information. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IParameterResolver.ResolveMethodParameters(Microsoft.AspNet.SignalR.Hubs.MethodDescriptor,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Resolves method parameter values based on provided objects. |
| | | </summary> |
| | | <param name="method">Method descriptor.</param> |
| | | <param name="values">List of values to resolve parameter values from.</param> |
| | | <returns>Array of parameter values.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor"> |
| | | <summary> |
| | | Holds information about a single hub method parameter. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor.Name"> |
| | | <summary> |
| | | Parameter name. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor.ParameterType"> |
| | | <summary> |
| | | Parameter type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.ReflectedMethodDescriptorProvider.FetchMethodsFor(Microsoft.AspNet.SignalR.Hubs.HubDescriptor)"> |
| | | <summary> |
| | | Retrieves an existing dictionary of all available methods for a given hub from cache. |
| | | If cache entry does not exist - it is created automatically by BuildMethodCacheFor. |
| | | </summary> |
| | | <param name="hub"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.ReflectedMethodDescriptorProvider.BuildMethodCacheFor(Microsoft.AspNet.SignalR.Hubs.HubDescriptor)"> |
| | | <summary> |
| | | Builds a dictionary of all possible methods on a given hub. |
| | | Single entry contains a collection of available overloads for a given method name (key). |
| | | This dictionary is being cached afterwards. |
| | | </summary> |
| | | <param name="hub">Hub to build cache for</param> |
| | | <returns>Dictionary of available methods</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.ReflectedMethodDescriptorProvider.TryGetMethod(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,System.String,Microsoft.AspNet.SignalR.Hubs.MethodDescriptor@,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Searches the specified <paramref name="hub">Hub</paramref> for the specified <paramref name="method"/>. |
| | | </summary> |
| | | <remarks> |
| | | In the case that there are multiple overloads of the specified <paramref name="method"/>, the <paramref name="parameters">parameter set</paramref> helps determine exactly which instance of the overload should be resolved. |
| | | If there are multiple overloads found with the same number of matching parameters, none of the methods will be returned because it is not possible to determine which overload of the method was intended to be resolved. |
| | | </remarks> |
| | | <param name="hub">Hub to search for the specified <paramref name="method"/> on.</param> |
| | | <param name="method">The method name to search for.</param> |
| | | <param name="descriptor">If successful, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor"/> that was resolved.</param> |
| | | <param name="parameters">The set of parameters that will be used to help locate a specific overload of the specified <paramref name="method"/>.</param> |
| | | <returns>True if the method matching the name/parameter set is found on the hub, otherwise false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"> |
| | | <summary> |
| | | Holds information about a single hub. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubDescriptor.HubType"> |
| | | <summary> |
| | | Hub type. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IMethodDescriptorProvider"> |
| | | <summary> |
| | | Describes a hub method provider that builds a collection of available methods on a given hub. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IMethodDescriptorProvider.GetMethods(Microsoft.AspNet.SignalR.Hubs.HubDescriptor)"> |
| | | <summary> |
| | | Retrieve all methods on a given hub. |
| | | </summary> |
| | | <param name="hub">Hub descriptor object.</param> |
| | | <returns>Available methods.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IMethodDescriptorProvider.TryGetMethod(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,System.String,Microsoft.AspNet.SignalR.Hubs.MethodDescriptor@,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Tries to retrieve a method. |
| | | </summary> |
| | | <param name="hub">Hub descriptor object</param> |
| | | <param name="method">Name of the method.</param> |
| | | <param name="descriptor">Descriptor of the method, if found. Null otherwise.</param> |
| | | <param name="parameters">Method parameters to match.</param> |
| | | <returns>True, if a method has been found.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubManager"> |
| | | <summary> |
| | | Describes a hub manager - main point in the whole hub and method lookup process. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHub(System.String)"> |
| | | <summary> |
| | | Retrieves a single hub descriptor. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <returns>Hub descriptor, if found. Null, otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHubs(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,System.Boolean})"> |
| | | <summary> |
| | | Retrieves all available hubs matching the given predicate. |
| | | </summary> |
| | | <returns>List of hub descriptors.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.ResolveHub(System.String)"> |
| | | <summary> |
| | | Resolves a given hub name to a concrete object. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <returns>Hub implementation instance, if found. Null otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.ResolveHubs"> |
| | | <summary> |
| | | Resolves all available hubs to their concrete objects. |
| | | </summary> |
| | | <returns>List of hub instances.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHubMethod(System.String,System.String,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Retrieves a method with a given name on a given hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <param name="method">Name of the method to find.</param> |
| | | <param name="parameters">Method parameters to match.</param> |
| | | <returns>Descriptor of the method, if found. Null otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHubMethods(System.String,System.Func{Microsoft.AspNet.SignalR.Hubs.MethodDescriptor,System.Boolean})"> |
| | | <summary> |
| | | Gets all methods available to call on a given hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub,</param> |
| | | <param name="predicate">Optional predicate for filtering results.</param> |
| | | <returns>List of available methods.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor"> |
| | | <summary> |
| | | Holds information about a single hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.ReturnType"> |
| | | <summary> |
| | | The return type of this method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Hub"> |
| | | <summary> |
| | | Hub descriptor object, target to this method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Parameters"> |
| | | <summary> |
| | | Available method parameters. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Invoker"> |
| | | <summary> |
| | | Method invocation delegate. |
| | | Takes a target hub and an array of invocation arguments as it's arguments. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Attributes"> |
| | | <summary> |
| | | Attributes attached to this method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHub.Context"> |
| | | <summary> |
| | | Gets a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubCallerContext"/>. Which contains information about the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHub.Clients"> |
| | | <summary> |
| | | Gets a dynamic object that represents all clients connected to this hub (not hub instance). |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHub.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> the hub instance. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"> |
| | | <summary> |
| | | Called when a new connection is made to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"> |
| | | <summary> |
| | | Called when a connection reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> after a timeout. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"> |
| | | <summary> |
| | | Called when a connection disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> gracefully or due to a timeout. |
| | | </summary> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the connection has been lost for longer than the |
| | | <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"/>. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.ConnectionId"> |
| | | <summary> |
| | | Gets the connection id of the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.RequestCookies"> |
| | | <summary> |
| | | Gets the cookies for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.Headers"> |
| | | <summary> |
| | | Gets the headers for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.QueryString"> |
| | | <summary> |
| | | Gets the querystring for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.User"> |
| | | <summary> |
| | | Gets the <see cref="T:System.Security.Principal.IPrincipal"/> for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.Request"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current HTTP request. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.#ctor"> |
| | | <summary> |
| | | This constructor is only intended to enable mocking of the class. Use of this constructor |
| | | for other purposes may result in unexpected behavior. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"> |
| | | <summary> |
| | | Handles all communication over the hubs persistent connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubDispatcher.#ctor(Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Initializes an instance of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> class. |
| | | </summary> |
| | | <param name="configuration">Configuration settings determining whether to enable JS proxies and provide clients with detailed hub errors.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubDispatcher.OnReceived(Microsoft.AspNet.SignalR.IRequest,System.String,System.String)"> |
| | | <summary> |
| | | Processes the hub's incoming method calls. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubDescriptorProvider"> |
| | | <summary> |
| | | Describes hub descriptor provider, which provides information about available hubs. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubDescriptorProvider.GetHubs"> |
| | | <summary> |
| | | Retrieve all avaiable hubs. |
| | | </summary> |
| | | <returns>Collection of hub descriptors.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubDescriptorProvider.TryGetHub(System.String,Microsoft.AspNet.SignalR.Hubs.HubDescriptor@)"> |
| | | <summary> |
| | | Tries to retrieve hub with a given name. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <param name="descriptor">Retrieved descriptor object.</param> |
| | | <returns>True, if hub has been found</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hub`1"> |
| | | <summary> |
| | | Provides methods that communicate with SignalR connections that connected to a <see cref="T:Microsoft.AspNet.SignalR.Hub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hub`1.Clients"> |
| | | <summary> |
| | | Gets a dynamic object that represents all clients connected to this hub (not hub instance). |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.HubConfiguration.EnableJavaScriptProxies"> |
| | | <summary> |
| | | Determines whether JavaScript proxies for the server-side hubs should be auto generated at {Path}/hubs or {Path}/js. |
| | | Defaults to true. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.HubConfiguration.EnableDetailedErrors"> |
| | | <summary> |
| | | Determines whether detailed exceptions thrown in Hub methods get reported back the invoking client. |
| | | Defaults to false. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IHubContext"> |
| | | <summary> |
| | | Provides access to information about a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext.Clients"> |
| | | <summary> |
| | | Encapsulates all information about a SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> the hub. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.ConnectionMessage"> |
| | | <summary> |
| | | A message sent to one more connections. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.Signal"> |
| | | <summary> |
| | | The signal to this message should be sent to. Connections subscribed to this signal |
| | | will receive the message payload. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.Signals"> |
| | | <summary> |
| | | A list of signals this message should be delivered to. If this is used |
| | | the Signal cannot be used. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.Value"> |
| | | <summary> |
| | | The payload of the message. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.ExcludedSignals"> |
| | | <summary> |
| | | Represents a list of signals that should be used to filter what connections |
| | | receive this message. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionMessage.#ctor(System.String,System.Object,System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.ConnectionMessage"/> class. |
| | | </summary> |
| | | <param name="signal">The signal</param> |
| | | <param name="value">The payload of the message</param> |
| | | <param name="excludedSignals">The signals to exclude.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.GlobalHost"> |
| | | <summary> |
| | | Provides access to default host information. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.DependencyResolver"> |
| | | <summary> |
| | | Gets or sets the the default <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.Configuration"> |
| | | <summary> |
| | | Gets the default <see cref="T:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager"> |
| | | <summary> |
| | | Gets the default <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.TraceManager"> |
| | | <summary> |
| | | Gets the default <see cref="T:Microsoft.AspNet.SignalR.Tracing.ITraceManager"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.HubPipeline"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IRequest"> |
| | | <summary> |
| | | Represents a SignalR request |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Url"> |
| | | <summary> |
| | | Gets the url for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.LocalPath"> |
| | | <summary> |
| | | The local path part of the url |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.QueryString"> |
| | | <summary> |
| | | Gets the querystring for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Headers"> |
| | | <summary> |
| | | Gets the headers for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Cookies"> |
| | | <summary> |
| | | Gets the cookies for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.User"> |
| | | <summary> |
| | | Gets security information for the current HTTP request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Environment"> |
| | | <summary> |
| | | Gets the owin environment |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IRequest.ReadForm"> |
| | | <summary> |
| | | Reads the form of the http request |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IUntrackedDisposable"> |
| | | <summary> |
| | | This marker interface can be used in lieu of IDisposable in order to indicate to the dependency resolver that |
| | | it should not retain/track references nor invoke Dispose on instances of the resolved type. |
| | | This is useful for transient types that are created by the dependency resolver, but are short-lived and will |
| | | be Disposed by some other means outside of the resolver. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.SipHashBasedDictionaryConverter"> |
| | | <summary> |
| | | A converter for dictionaries that uses a SipHash comparer |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.IJsonValue"> |
| | | <summary> |
| | | Represents a JSON value. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.IJsonValue.ConvertTo(System.Type)"> |
| | | <summary> |
| | | Converts the parameter value to the specified <see cref="T:System.Type"/>. |
| | | </summary> |
| | | <param name="type">The <see cref="T:System.Type"/> to convert the parameter to.</param> |
| | | <returns>The converted parameter value.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.IJsonValue.CanConvertTo(System.Type)"> |
| | | <summary> |
| | | Determines if the parameter can be converted to the specified <see cref="T:System.Type"/>. |
| | | </summary> |
| | | <param name="type">The <see cref="T:System.Type"/> to check.</param> |
| | | <returns>True if the parameter can be converted to the specified <see cref="T:System.Type"/>, false otherwise.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.IJsonWritable"> |
| | | <summary> |
| | | Implementations handle their own serialization to JSON. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.IJsonWritable.WriteJson(System.IO.TextWriter)"> |
| | | <summary> |
| | | Serializes itself to JSON via a <see cref="T:System.IO.TextWriter"/>. |
| | | </summary> |
| | | <param name="writer">The <see cref="T:System.IO.TextWriter"/> that receives the JSON serialized object.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.JRawValue"> |
| | | <summary> |
| | | An implementation of IJsonValue over JSON.NET |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions"> |
| | | <summary> |
| | | Extensions for <see cref="T:Newtonsoft.Json.JsonSerializer"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Parse``1(Newtonsoft.Json.JsonSerializer,System.String)"> |
| | | <summary> |
| | | Deserializes the JSON to a .NET object. |
| | | </summary> |
| | | <param name="serializer">The serializer</param> |
| | | <typeparam name="T">The <see cref="T:System.Type"/> of object being deserialized.</typeparam> |
| | | <param name="json">The JSON to deserialize</param> |
| | | <returns>The deserialized object from the JSON string.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Parse``1(Newtonsoft.Json.JsonSerializer,System.ArraySegment{System.Byte},System.Text.Encoding)"> |
| | | <summary> |
| | | Deserializes the JSON to a .NET object. |
| | | </summary> |
| | | <param name="serializer">The serializer</param> |
| | | <typeparam name="T">The <see cref="T:System.Type"/> of object being deserialized.</typeparam> |
| | | <param name="jsonBuffer">The JSON buffer to deserialize</param> |
| | | <param name="encoding">The encoding to use.</param> |
| | | <returns>The deserialized object from the JSON string.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Serialize(Newtonsoft.Json.JsonSerializer,System.Object,System.IO.TextWriter)"> |
| | | <summary> |
| | | Serializes the specified object to a <see cref="T:System.IO.TextWriter"/>. |
| | | </summary> |
| | | <param name="serializer">The JSON serializer</param> |
| | | <param name="value">The object to serialize</param> |
| | | <param name="writer">The <see cref="T:System.IO.TextWriter"/> to serialize the object to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Stringify(Newtonsoft.Json.JsonSerializer,System.Object)"> |
| | | <summary> |
| | | Serializes the specified object to a JSON string. |
| | | </summary> |
| | | <param name="serializer">The serializer</param> |
| | | <param name="value">The object to serailize.</param> |
| | | <returns>A JSON string representation of the object.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.JsonUtility"> |
| | | <summary> |
| | | Helper class for common JSON operations. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonUtility.CamelCase(System.String)"> |
| | | <summary> |
| | | Converts the specified name to camel case. |
| | | </summary> |
| | | <param name="name">The name to convert.</param> |
| | | <returns>A camel cased version of the specified name.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Json.JsonUtility.JsonMimeType"> |
| | | <summary> |
| | | Gets a string that returns JSON mime type "application/json; charset=UTF-8". |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Json.JsonUtility.JavaScriptMimeType"> |
| | | <summary> |
| | | Gets a string that returns JSONP mime type "application/javascript; charset=UTF-8". |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonUtility.CreateDefaultSerializerSettings"> |
| | | <summary> |
| | | Creates a default <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> instance. |
| | | </summary> |
| | | <returns>The newly created <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonUtility.CreateDefaultSerializer"> |
| | | <summary> |
| | | Creates a <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance with the default setting. |
| | | </summary> |
| | | <returns>The newly created <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.MessageBroker"> |
| | | <summary> |
| | | This class is the main coordinator. |
| | | It schedules work to be done for a particular subscription. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage"> |
| | | <summary> |
| | | Represents a message to the scaleout backplane |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage.Messages"> |
| | | <summary> |
| | | The messages from SignalR |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage.ServerCreationTime"> |
| | | <summary> |
| | | The time the message was created on the origin server |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus"> |
| | | <summary> |
| | | Common base class for scaleout message bus implementations. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.StreamCount"> |
| | | <summary> |
| | | The number of streams can't change for the lifetime of this instance. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.Open(System.Int32)"> |
| | | <summary> |
| | | Opens the specified queue for sending messages. |
| | | <param name="streamIndex">The index of the stream to open.</param> |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.Close(System.Int32)"> |
| | | <summary> |
| | | Closes the specified queue. |
| | | <param name="streamIndex">The index of the stream to close.</param> |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.OnError(System.Int32,System.Exception)"> |
| | | <summary> |
| | | Closes the specified queue for sending messages making all sends fail asynchronously. |
| | | </summary> |
| | | <param name="streamIndex">The index of the stream to close.</param> |
| | | <param name="exception">The error that occurred.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.Send(System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Messaging.Message})"> |
| | | <summary> |
| | | Sends messages to the backplane |
| | | </summary> |
| | | <param name="messages">The list of messages to send</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.OnReceived(System.Int32,System.UInt64,Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage)"> |
| | | <summary> |
| | | Invoked when a payload is received from the backplane. There should only be one active call at any time. |
| | | </summary> |
| | | <param name="streamIndex">id of the stream.</param> |
| | | <param name="id">id of the payload within that stream.</param> |
| | | <param name="message">The scaleout message.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.IMessageBus.Publish(Microsoft.AspNet.SignalR.Messaging.Message)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="message"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.IMessageBus.Subscribe(Microsoft.AspNet.SignalR.Messaging.ISubscriber,System.String,System.Func{Microsoft.AspNet.SignalR.Messaging.MessageResult,System.Object,System.Threading.Tasks.Task{System.Boolean}},System.Int32,System.Object)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="subscriber"></param> |
| | | <param name="cursor"></param> |
| | | <param name="callback"></param> |
| | | <param name="maxMessages"></param> |
| | | <param name="state"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.MessageBus"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="resolver"></param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.#ctor(Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier,Microsoft.AspNet.SignalR.Tracing.ITraceManager,Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager,Microsoft.AspNet.SignalR.Configuration.IConfigurationManager,System.Int32)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="stringMinifier"></param> |
| | | <param name="traceManager"></param> |
| | | <param name="performanceCounterManager"></param> |
| | | <param name="configurationManager"></param> |
| | | <param name="maxTopicsWithNoSubscriptions"></param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.Publish(Microsoft.AspNet.SignalR.Messaging.Message)"> |
| | | <summary> |
| | | Publishes a new message to the specified event on the bus. |
| | | </summary> |
| | | <param name="message">The message to publish.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.Subscribe(Microsoft.AspNet.SignalR.Messaging.ISubscriber,System.String,System.Func{Microsoft.AspNet.SignalR.Messaging.MessageResult,System.Object,System.Threading.Tasks.Task{System.Boolean}},System.Int32,System.Object)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="subscriber"></param> |
| | | <param name="cursor"></param> |
| | | <param name="callback"></param> |
| | | <param name="maxMessages"></param> |
| | | <param name="state"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.CreateTopic(System.String)"> |
| | | <summary> |
| | | Creates a topic for the specified key. |
| | | </summary> |
| | | <param name="key">The key to create the topic for.</param> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.Messaging.Topic"/> for the specified key.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.MessageResult"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.MessageResult.Messages"> |
| | | <summary> |
| | | Gets an <see cref="T:IList{Message}"/> associated with the result. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageResult.#ctor(System.Collections.Generic.IList{System.ArraySegment{Microsoft.AspNet.SignalR.Messaging.Message}},System.Int32)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Messaging.MessageResult"/> struct. |
| | | </summary> |
| | | <param name="messages">The array of messages associated with this <see cref="T:Microsoft.AspNet.SignalR.Messaging.MessageResult"/>.</param> |
| | | <param name="totalCount">The amount of messages populated in the messages array.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.ScaleoutConfiguration"> |
| | | <summary> |
| | | Common settings for scale-out message bus implementations. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutConfiguration.QueueBehavior"> |
| | | <summary> |
| | | Gets or sets a value that represents the queuing behavior for scale-out messages. |
| | | Defaults to <see cref="F:Microsoft.AspNet.SignalR.QueuingBehavior.InitialOnly">QueuingBehavior.InitialOnly</see> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutConfiguration.MaxQueueLength"> |
| | | <summary> |
| | | The maximum length of the outgoing send queue. Messages being sent to the backplane are queued |
| | | up to this length. After the max length is reached, further sends will throw an <see cref="T:System.InvalidOperationException">InvalidOperationException</see>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Source"> |
| | | <summary> |
| | | Which connection the message originated from |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Key"> |
| | | <summary> |
| | | The signal for the message (connection id, group, etc) |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Value"> |
| | | <summary> |
| | | The message payload |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.CommandId"> |
| | | <summary> |
| | | The command id if this message is a command |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.WaitForAck"> |
| | | <summary> |
| | | Determines if the caller should wait for acknowledgement for this message |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.IsAck"> |
| | | <summary> |
| | | Determines if this message is itself an ACK |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Filter"> |
| | | <summary> |
| | | A list of connection ids to filter out |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Encoding"> |
| | | <summary> |
| | | The encoding of the message |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.MappingId"> |
| | | <summary> |
| | | The payload id. Only used in scaleout scenarios |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.StreamIndex"> |
| | | <summary> |
| | | The stream index this message came from. Only used the scaleout scenarios. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.AuthorizeAttribute"> |
| | | <summary> |
| | | Apply to Hubs and Hub methods to authorize client connections to Hubs and authorize client invocations of Hub methods. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.AuthorizeAttribute.RequireOutgoing"> |
| | | <summary> |
| | | Set to false to apply authorization only to the invocations of any of the Hub's server-side methods. |
| | | This property only affects attributes applied to the Hub class. |
| | | This property cannot be read. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.AuthorizeAttribute.Roles"> |
| | | <summary> |
| | | Gets or sets the user roles. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.AuthorizeAttribute.Users"> |
| | | <summary> |
| | | Gets or sets the authorized users. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubConnection(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Determines whether client is authorized to connect to <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <param name="hubDescriptor">Description of the hub client is attempting to connect to.</param> |
| | | <param name="request">The (re)connect request from the client.</param> |
| | | <returns>true if the caller is authorized to connect to the hub; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubMethodInvocation(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Boolean)"> |
| | | <summary> |
| | | Determines whether client is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method. |
| | | </summary> |
| | | <param name="hubIncomingInvokerContext">An <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"/> providing details regarding the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method invocation.</param> |
| | | <param name="appliesToMethod">Indicates whether the interface instance is an attribute applied directly to a method.</param> |
| | | <returns>true if the caller is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.UserAuthorized(System.Security.Principal.IPrincipal)"> |
| | | <summary> |
| | | When overridden, provides an entry point for custom authorization checks. |
| | | Called by <see cref="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubConnection(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"/> and <see cref="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubMethodInvocation(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Boolean)"/>. |
| | | </summary> |
| | | <param name="user">The <see cref="T:System.Security.Principal.IPrincipal"/> for the client being authorize</param> |
| | | <returns>true if the user is authorized, otherwise, false</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.HubPipelineExtensions.RequireAuthentication(Microsoft.AspNet.SignalR.Hubs.IHubPipeline)"> |
| | | <summary> |
| | | Requiring Authentication adds an <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> with <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"/> |
| | | and <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"/> authorizers that will be applied globally to all hubs and hub methods. |
| | | These authorizers require that the <see cref="T:System.Security.Principal.IPrincipal"/>'s <see cref="T:System.Security.Principal.IIdentity"/> |
| | | IsAuthenticated for any clients that invoke server-side hub methods or receive client-side hub method invocations. |
| | | </summary> |
| | | <param name="pipeline">The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> to which the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule" /> will be added.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IHubContext`1"> |
| | | <summary> |
| | | Provides access to information about a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext`1.Clients"> |
| | | <summary> |
| | | Encapsulates all information about a SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext`1.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> the hub. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IConnectionGroupManager"> |
| | | <summary> |
| | | Manages groups for a connection and allows sending messages to the group. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IConnectionGroupManager.Send(System.String,System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified group. |
| | | </summary> |
| | | <param name="groupName">The name of the group.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IConnectionGroupManager.Send(System.Collections.Generic.IList{System.String},System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified groups. |
| | | </summary> |
| | | <param name="groupNames">The names of the groups.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionExtensions.Send(Microsoft.AspNet.SignalR.IConnection,System.String,System.Object)"> |
| | | <summary> |
| | | Sends a message to all connections subscribed to the specified signal. An example of signal may be a |
| | | specific connection id. |
| | | </summary> |
| | | <param name="connection">The connection</param> |
| | | <param name="connectionId">The connectionId to send to.</param> |
| | | <param name="value">The value to publish.</param> |
| | | <returns>A task that represents when the broadcast is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionExtensions.Send(Microsoft.AspNet.SignalR.IConnection,System.Collections.Generic.IList{System.String},System.Object)"> |
| | | <summary> |
| | | Sends a message to all connections subscribed to the specified signal. An example of signal may be a |
| | | specific connection id. |
| | | </summary> |
| | | <param name="connection">The connection</param> |
| | | <param name="connectionIds">The connection ids to send to.</param> |
| | | <param name="value">The value to publish.</param> |
| | | <returns>A task that represents when the broadcast is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionExtensions.Broadcast(Microsoft.AspNet.SignalR.IConnection,System.Object,System.String[])"> |
| | | <summary> |
| | | Broadcasts a value to all connections, excluding the connection ids specified. |
| | | </summary> |
| | | <param name="connection">The connection</param> |
| | | <param name="value">The value to broadcast.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when the broadcast is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"> |
| | | <summary> |
| | | Provides access to information about a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection" />. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IPersistentConnectionContext.Connection"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnection" /> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection" />. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IPersistentConnectionContext.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnectionGroupManager" /> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection" />. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Owin.WebSocketConstants"> |
| | | <summary> |
| | | Standard keys and values for use within the OWIN interfaces |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Resources"> |
| | | <summary> |
| | | A strongly-typed resource class, for looking up localized strings, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.ResourceManager"> |
| | | <summary> |
| | | Returns the cached ResourceManager instance used by this class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Culture"> |
| | | <summary> |
| | | Overrides the current thread's CurrentUICulture property for all |
| | | resource lookups using this strongly typed resource class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.DynamicComment_CallsMethodOnServerSideDeferredPromise"> |
| | | <summary> |
| | | Looks up a localized string similar to /// <summary>Calls the {0} method on the server-side {1} hub.&#10;Returns a jQuery.Deferred() promise.</summary>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.DynamicComment_ServerSideTypeIs"> |
| | | <summary> |
| | | Looks up a localized string similar to /// <param name=\"{0}\" type=\"{1}\">Server side type is {2}</param>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_AmbiguousMessage"> |
| | | <summary> |
| | | Looks up a localized string similar to Ambiguous message. Unable to send to both '{0}' and '{1}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ArgumentNullOrEmpty"> |
| | | <summary> |
| | | Looks up a localized string similar to Argument cannot be null or empty. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_BufferSizeOutOfRange"> |
| | | <summary> |
| | | Looks up a localized string similar to The buffer size '{0}' is out of range.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_CallerNotAuthorizedToInvokeMethodOn"> |
| | | <summary> |
| | | Looks up a localized string similar to Caller is not authorized to invoke the {0} method on {1}.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ConnectionIdIncorrectFormat"> |
| | | <summary> |
| | | Looks up a localized string similar to The ConnectionId is in the incorrect format.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ConnectionNotInitialized"> |
| | | <summary> |
| | | Looks up a localized string similar to The PersistentConnection is not initialized.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DisconnectTimeoutCannotBeConfiguredAfterKeepAlive"> |
| | | <summary> |
| | | Looks up a localized string similar to DisconnectTimeout cannot be configured after the KeepAlive.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DisconnectTimeoutMustBeAtLeastSixSeconds"> |
| | | <summary> |
| | | Looks up a localized string similar to DisconnectTimeout must be at least six seconds.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DoNotReadRequireOutgoing"> |
| | | <summary> |
| | | Looks up a localized string similar to Do not read RequireOutgoing. Use protected _requireOutgoing instead.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DuplicateHubNames"> |
| | | <summary> |
| | | Looks up a localized string similar to Two Hubs must not share the same name. '{0}' and '{1}' both share the name '{2}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DuplicateHubNamesInConnectionData"> |
| | | <summary> |
| | | Looks up a localized string similar to Duplicate Hub names found.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DuplicatePayloadsForStream"> |
| | | <summary> |
| | | Looks up a localized string similar to Duplicate payload id detected for stream '{0}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ExceptionContextCanOnlyBeModifiedOnce"> |
| | | <summary> |
| | | Looks up a localized string similar to The ExceptionContext has already been modified once and cannot be modified again.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_HubCouldNotBeResolved"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' Hub could not be resolved.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_HubInvocationFailed"> |
| | | <summary> |
| | | Looks up a localized string similar to There was an error invoking Hub method '{0}.{1}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_HubProgressOnlyReportableBeforeMethodReturns"> |
| | | <summary> |
| | | Looks up a localized string similar to You cannot report progress on a hub method invocation that has already completed.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_InvalidCursorFormat"> |
| | | <summary> |
| | | Looks up a localized string similar to Invalid cursor.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_InvalidForeverFrameId"> |
| | | <summary> |
| | | Looks up a localized string similar to The supplied frameId is in the incorrect format.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_IsNotA"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' is not a {1}.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_JavaScriptProxyDisabled"> |
| | | <summary> |
| | | Looks up a localized string similar to SignalR: JavaScript Hub proxy generation has been disabled.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_KeepAliveMustBeGreaterThanTwoSeconds"> |
| | | <summary> |
| | | Looks up a localized string similar to KeepAlive value must be greater than two seconds.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_KeepAliveMustBeNoMoreThanAThirdOfTheDisconnectTimeout"> |
| | | <summary> |
| | | Looks up a localized string similar to KeepAlive value must be no more than a third of the DisconnectTimeout.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MaxScaleoutMappingsPerStreamMustBeNonNegative"> |
| | | <summary> |
| | | Looks up a localized string similar to The value of the MaxScaleoutMappingsPerStream property must be greater or equal to zero.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodCouldNotBeResolved"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' method could not be resolved. No method found with that name.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodCouldNotBeResolvedCandidates"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' method could not be resolved. Potential candidates are: {1}. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodLevelOutgoingAuthorization"> |
| | | <summary> |
| | | Looks up a localized string similar to Outgoing authorization can only be required for an entire Hub, not a specific method.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodMustNotTakeOutParameter"> |
| | | <summary> |
| | | Looks up a localized string similar to The '{0}' parameter of '{1}.{2}' must not be an out parameter.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodMustNotTakeRefParameter"> |
| | | <summary> |
| | | Looks up a localized string similar to The '{0}' parameter of '{1}.{2}' must not be a ref parameter.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodMustReturnVoidOrTask"> |
| | | <summary> |
| | | Looks up a localized string similar to The return type of '{0}.{1}' must be void or Task.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MultipleActivatorsAreaRegisteredCallGetServices"> |
| | | <summary> |
| | | Looks up a localized string similar to Multiple activators for type {0} are registered. Please call GetServices instead.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_NoConfiguration"> |
| | | <summary> |
| | | Looks up a localized string similar to A configuration object must be specified.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_NoDependencyResolver"> |
| | | <summary> |
| | | Looks up a localized string similar to A dependency resolver must be specified.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_NotWebSocketRequest"> |
| | | <summary> |
| | | Looks up a localized string similar to Not a valid web socket request.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ParseObjectFailed"> |
| | | <summary> |
| | | Looks up a localized string similar to Unexpected end when reading object.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ProtocolErrorMissingConnectionToken"> |
| | | <summary> |
| | | Looks up a localized string similar to Protocol error: Missing connection token.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ProtocolErrorUnknownTransport"> |
| | | <summary> |
| | | Looks up a localized string similar to Protocol error: Unknown transport.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ScaleoutQueuingConfig"> |
| | | <summary> |
| | | Looks up a localized string similar to Scaleout queuing is enabled but maximum queue size is 0. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_StateExceededMaximumLength"> |
| | | <summary> |
| | | Looks up a localized string similar to State has exceeded the maximum length of 4096 bytes.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_StreamClosed"> |
| | | <summary> |
| | | Looks up a localized string similar to The stream has been closed.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_StreamNotOpen"> |
| | | <summary> |
| | | Looks up a localized string similar to The stream is not open.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TaskQueueFull"> |
| | | <summary> |
| | | Looks up a localized string similar to The queue is full.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TypeMustBeInterface"> |
| | | <summary> |
| | | Looks up a localized string similar to The type T, '{0}', passed to Hub<T> must be an interface.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TypeMustNotContainEvents"> |
| | | <summary> |
| | | Looks up a localized string similar to The interface '{0}' must not contain any events.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TypeMustNotContainProperties"> |
| | | <summary> |
| | | Looks up a localized string similar to The interface '{0}' must not contain any properties.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_UnableToAddModulePiplineAlreadyInvoked"> |
| | | <summary> |
| | | Looks up a localized string similar to Unable to add module. The HubPipeline has already been invoked.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_UnrecognizedUserIdentity"> |
| | | <summary> |
| | | Looks up a localized string similar to Unrecognized user identity. The user identity cannot change during an active SignalR connection.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_UsingHubInstanceNotCreatedUnsupported"> |
| | | <summary> |
| | | Looks up a localized string similar to Using a Hub instance not created by the HubPipeline is unsupported.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_WebSocketsNotSupported"> |
| | | <summary> |
| | | Looks up a localized string similar to WebSockets is not supported.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Forbidden_JSONPDisabled"> |
| | | <summary> |
| | | Looks up a localized string similar to Forbidden: JSONP is disabled.. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IGroupManager"> |
| | | <summary> |
| | | Manages groups for a connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IGroupManager.Add(System.String,System.String)"> |
| | | <summary> |
| | | Adds a connection to the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to add to the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being added to the group.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IGroupManager.Remove(System.String,System.String)"> |
| | | <summary> |
| | | Removes a connection from the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to remove from the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being removed from the group.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hub"> |
| | | <summary> |
| | | Provides methods that communicate with SignalR connections that connected to a <see cref="T:Microsoft.AspNet.SignalR.Hub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITrackingConnection"> |
| | | <summary> |
| | | Represents a connection that can be tracked by an <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.ConnectionId"> |
| | | <summary> |
| | | Gets the id of the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.CancellationToken"> |
| | | <summary> |
| | | Gets a cancellation token that represents the connection's lifetime. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.ConnectTask"> |
| | | <summary> |
| | | Gets the task that completes when the task returned by PersistentConnection.OnConnected does. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.IsAlive"> |
| | | <summary> |
| | | Gets a value that represents if the connection is alive. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.IsTimedOut"> |
| | | <summary> |
| | | Gets a value that represents if the connection is timed out. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.SupportsKeepAlive"> |
| | | <summary> |
| | | Gets a value that represents if the connection supprots keep alive. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.RequiresTimeout"> |
| | | <summary> |
| | | Gets a value that represents if the connection should timeout after inactivity. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.DisconnectThreshold"> |
| | | <summary> |
| | | Gets a value indicating the amount of time to wait after the connection dies before firing the disconnecting the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.Url"> |
| | | <summary> |
| | | Gets the uri of the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.ApplyState(Microsoft.AspNet.SignalR.Transports.TransportConnectionStates)"> |
| | | <summary> |
| | | Applies a new state to the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.Disconnect"> |
| | | <summary> |
| | | Causes the connection to disconnect. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.Timeout"> |
| | | <summary> |
| | | Causes the connection to timeout. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.KeepAlive"> |
| | | <summary> |
| | | Sends a keep alive ping over the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.IncrementConnectionsCount"> |
| | | <summary> |
| | | Increments performance counter for current connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.DecrementConnectionsCount"> |
| | | <summary> |
| | | Decrements performance counter for current connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.End"> |
| | | <summary> |
| | | Kills the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITransport"> |
| | | <summary> |
| | | Represents a transport that communicates |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Received"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the transport receives data. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Connected"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the initial connection connects to the transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Reconnected"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the transport reconnects. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Disconnected"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the transport disconnects. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.ConnectionId"> |
| | | <summary> |
| | | Gets or sets the connection id for the transport. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransport.GetGroupsToken"> |
| | | <summary> |
| | | Get groupsToken in request over the transport. |
| | | </summary> |
| | | <returns>groupsToken in request</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransport.ProcessRequest(Microsoft.AspNet.SignalR.Transports.ITransportConnection)"> |
| | | <summary> |
| | | Processes the specified <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportConnection"/> for this transport. |
| | | </summary> |
| | | <param name="connection">The <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportConnection"/> to process.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the transport has finished processing the connection.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransport.Send(System.Object)"> |
| | | <summary> |
| | | Sends data over the transport. |
| | | </summary> |
| | | <param name="value">The value to be sent.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the send is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat"> |
| | | <summary> |
| | | Manages tracking the state of connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.AddOrUpdateConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Adds a new connection to the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to be added.</param> |
| | | <returns>The connection it replaced, if any.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.MarkConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Marks an existing connection as active. |
| | | </summary> |
| | | <param name="connection">The connection to mark.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.RemoveConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Removes a connection from the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to remove.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.GetConnections"> |
| | | <summary> |
| | | Gets a list of connections being tracked. |
| | | </summary> |
| | | <returns>A list of connections.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITransportManager"> |
| | | <summary> |
| | | Manages the transports for connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportManager.GetTransport(Microsoft.AspNet.SignalR.Hosting.HostContext)"> |
| | | <summary> |
| | | Gets the specified transport for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>. |
| | | </summary> |
| | | <param name="hostContext">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/> for the current request.</param> |
| | | <returns>The <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransport"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportManager.SupportsTransport(System.String)"> |
| | | <summary> |
| | | Determines whether the specified transport is supported. |
| | | </summary> |
| | | <param name="transportName">The name of the transport to test.</param> |
| | | <returns>True if the transport is supported, otherwise False.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat"> |
| | | <summary> |
| | | Default implementation of <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Initializes and instance of the <see cref="T:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat"/> class. |
| | | </summary> |
| | | <param name="resolver">The <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.AddOrUpdateConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Adds a new connection to the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to be added.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.RemoveConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Removes a connection from the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to remove.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.MarkConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Marks an existing connection as active. |
| | | </summary> |
| | | <param name="connection">The connection to mark.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.PersistentResponse"> |
| | | <summary> |
| | | Represents a response to a connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.PersistentResponse.#ctor(System.Func{Microsoft.AspNet.SignalR.Messaging.Message,System.Boolean},System.Action{System.IO.TextWriter})"> |
| | | <summary> |
| | | Creates a new instance of <see cref="T:Microsoft.AspNet.SignalR.Transports.PersistentResponse"/>. |
| | | </summary> |
| | | <param name="exclude">A filter that determines whether messages should be written to the client.</param> |
| | | <param name="writeCursor">The cursor writer.</param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Messages"> |
| | | <summary> |
| | | The list of messages to be sent to the receiving connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.TotalCount"> |
| | | <summary> |
| | | The total count of the messages sent the receiving connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Initializing"> |
| | | <summary> |
| | | True if the connection is in process of initializing |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Aborted"> |
| | | <summary> |
| | | True if the connection was forcibly closed. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Reconnect"> |
| | | <summary> |
| | | True if the client should try reconnecting. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.GroupsToken"> |
| | | <summary> |
| | | Signed token representing the list of groups. Updates on change. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.LongPollDelay"> |
| | | <summary> |
| | | The time the long polling client should wait before reestablishing a connection if no data is received. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Microsoft#AspNet#SignalR#Json#IJsonWritable#WriteJson(System.IO.TextWriter)"> |
| | | <summary> |
| | | Serializes only the necessary components of the <see cref="T:Microsoft.AspNet.SignalR.Transports.PersistentResponse"/> to JSON |
| | | using Json.NET's JsonTextWriter to improve performance. |
| | | </summary> |
| | | <param name="writer">The <see cref="T:System.IO.TextWriter"/> that receives the JSON serialization.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.TransportManager"> |
| | | <summary> |
| | | The default <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportManager"/> implementation. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Initializes a new instance of <see cref="T:Microsoft.AspNet.SignalR.Transports.TransportManager"/> class. |
| | | </summary> |
| | | <param name="resolver">The default <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.Register(System.String,System.Func{Microsoft.AspNet.SignalR.Hosting.HostContext,Microsoft.AspNet.SignalR.Transports.ITransport})"> |
| | | <summary> |
| | | Adds a new transport to the list of supported transports. |
| | | </summary> |
| | | <param name="transportName">The specified transport.</param> |
| | | <param name="transportFactory">The factory method for the specified transport.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.Remove(System.String)"> |
| | | <summary> |
| | | Removes a transport from the list of supported transports. |
| | | </summary> |
| | | <param name="transportName">The specified transport.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.GetTransport(Microsoft.AspNet.SignalR.Hosting.HostContext)"> |
| | | <summary> |
| | | Gets the specified transport for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>. |
| | | </summary> |
| | | <param name="hostContext">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/> for the current request.</param> |
| | | <returns>The <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransport"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.SupportsTransport(System.String)"> |
| | | <summary> |
| | | Determines whether the specified transport is supported. |
| | | </summary> |
| | | <param name="transportName">The name of the transport to test.</param> |
| | | <returns>True if the transport is supported, otherwise False.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.GroupManager"> |
| | | <summary> |
| | | The default <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> implementation. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.#ctor(Microsoft.AspNet.SignalR.IConnection,System.String)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.GroupManager"/> class. |
| | | </summary> |
| | | <param name="connection">The <see cref="T:Microsoft.AspNet.SignalR.IConnection"/> this group resides on.</param> |
| | | <param name="groupPrefix">The prefix for this group. Either a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> name or <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> type name.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Send(System.String,System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified group. |
| | | </summary> |
| | | <param name="groupName">The name of the group.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Send(System.Collections.Generic.IList{System.String},System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified group. |
| | | </summary> |
| | | <param name="groupNames">The names of the groups.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Add(System.String,System.String)"> |
| | | <summary> |
| | | Adds a connection to the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to add to the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being added to the group.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Remove(System.String,System.String)"> |
| | | <summary> |
| | | Removes a connection from the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to remove from the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being removed from the group.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.PersistentConnection"> |
| | | <summary> |
| | | Represents a connection between client and server. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.PersistentConnection.Connection"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnection"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.PersistentConnection.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnectionGroupManager"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | OWIN entry point. |
| | | </summary> |
| | | <param name="environment"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(Microsoft.AspNet.SignalR.Hosting.HostContext)"> |
| | | <summary> |
| | | Handles all requests for <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>s. |
| | | </summary> |
| | | <param name="context">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/> for the current request.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> pipeline is complete.</returns> |
| | | <exception cref="T:System.InvalidOperationException"> |
| | | Thrown if connection wasn't initialized. |
| | | Thrown if the transport wasn't specified. |
| | | Thrown if the connection id wasn't specified. |
| | | </exception> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.GetSignals(System.String,System.String)"> |
| | | <summary> |
| | | Returns the signals used in the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <param name="userId">The user id for the current connection.</param> |
| | | <param name="connectionId">The id of the incoming connection.</param> |
| | | <returns>The signals used for this <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.AuthorizeRequest(Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Called before every request and gives the user a authorize the user. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <returns>A boolean value that represents if the request is authorized.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnRejoiningGroups(Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String},System.String)"> |
| | | <summary> |
| | | Called when a connection reconnects after a timeout to determine which groups should be rejoined. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="groups">The groups the calling connection claims to be part of.</param> |
| | | <param name="connectionId">The id of the reconnecting client.</param> |
| | | <returns>A collection of group names that should be joined on reconnect</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnConnected(Microsoft.AspNet.SignalR.IRequest,System.String)"> |
| | | <summary> |
| | | Called when a new connection is made. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the connecting client.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the connect operation is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnReconnected(Microsoft.AspNet.SignalR.IRequest,System.String)"> |
| | | <summary> |
| | | Called when a connection reconnects after a timeout. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the re-connecting client.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the re-connect operation is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnReceived(Microsoft.AspNet.SignalR.IRequest,System.String,System.String)"> |
| | | <summary> |
| | | Called when data is received from a connection. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the connection sending the data.</param> |
| | | <param name="data">The payload sent to the connection.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the receive operation is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnDisconnected(Microsoft.AspNet.SignalR.IRequest,System.String,System.Boolean)"> |
| | | <summary> |
| | | Called when a connection disconnects gracefully or due to a timeout. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the disconnected connection.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the connection has been lost for longer than the |
| | | <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"/>. |
| | | Timeouts can occur in scaleout when clients reconnect with another server. |
| | | </param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the disconnect operation is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IConnection"> |
| | | <summary> |
| | | A communication channel for a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> and its connections. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IConnection.DefaultSignal"> |
| | | <summary> |
| | | The main signal for this connection. This is the main signalr for a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IConnection.Send(Microsoft.AspNet.SignalR.ConnectionMessage)"> |
| | | <summary> |
| | | Sends a message to connections subscribed to the signal. |
| | | </summary> |
| | | <param name="message">The message to send.</param> |
| | | <returns>A task that returns when the message has be sent.</returns> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Maps SignalR hubs to the app builder pipeline at "/signalr". |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Maps SignalR hubs to the app builder pipeline at "/signalr". |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.HubConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Maps SignalR hubs to the app builder pipeline at the specified path. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map signalr hubs</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.HubConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Adds SignalR hubs to the app builder pipeline. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR(Owin.IAppBuilder,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Adds SignalR hubs to the app builder pipeline. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.HubConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR``1(Owin.IAppBuilder,System.String)"> |
| | | <summary> |
| | | Maps the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder pipeline at |
| | | the specified path. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR``1(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Maps the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder pipeline at |
| | | the specified path. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map the persistent connection</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder,System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Maps the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder pipeline at |
| | | the specified path. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map the persistent connection</param> |
| | | <param name="connectionType">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR``1(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Adds the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR``1(Owin.IAppBuilder,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Adds the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR(Owin.IAppBuilder,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Adds the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="connectionType">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | <returns></returns> |
| | | </member> |
| | | </members> |
| | | </doc> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <doc> |
| | | <assembly> |
| | | <name>Microsoft.AspNet.SignalR.SystemWeb</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="M:Microsoft.AspNet.SignalR.RequestExtensions.GetHttpContext(Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Returns the <see cref="T:System.Web.HttpContextBase"/> for this <see cref="T:Microsoft.AspNet.SignalR.IRequest"/>. |
| | | </summary> |
| | | <param name="request">The request</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapConnection``1(System.Web.Routing.RouteCollection,System.String,System.String)"> |
| | | <summary> |
| | | Maps a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> with the default dependency resolver to the specified path. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <typeparam name="T">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</typeparam> |
| | | <param name="name">The name of the route.</param> |
| | | <param name="url">path of the route.</param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapConnection``1(System.Web.Routing.RouteCollection,System.String,System.String,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Maps a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> with the default dependency resolver to the specified path. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <typeparam name="T">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</typeparam> |
| | | <param name="name">The name of the route.</param> |
| | | <param name="url">path of the route.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapConnection``1(System.Web.Routing.RouteCollection,System.String,System.String,Microsoft.AspNet.SignalR.ConnectionConfiguration,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Maps a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> with the default dependency resolver to the specified path. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <typeparam name="T">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</typeparam> |
| | | <param name="name">The name of the route.</param> |
| | | <param name="url">path of the route.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <param name="build">An action to further configure the OWIN pipeline.</param> |
| | | <returns>The registered route</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapConnection(System.Web.Routing.RouteCollection,System.String,System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Maps a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> with the default dependency resolver to the specified path. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <param name="name">The name of the route.</param> |
| | | <param name="url">path of the route.</param> |
| | | <param name="type">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <returns>The registered route</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapConnection(System.Web.Routing.RouteCollection,System.String,System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Maps a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> with the default dependency resolver to the specified path. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <param name="name">The name of the route.</param> |
| | | <param name="url">path of the route.</param> |
| | | <param name="type">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <param name="build">An action to further configure the OWIN pipeline.</param> |
| | | <returns>The registered route</returns>. |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapHubs(System.Web.Routing.RouteCollection)"> |
| | | <summary> |
| | | Initializes the default hub route (/signalr). |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapHubs(System.Web.Routing.RouteCollection,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Initializes the default hub route (/signalr). |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapHubs(System.Web.Routing.RouteCollection,System.String,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Initializes the hub route using specified configuration. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <param name="path">The path of the hubs route.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapHubs(System.Web.Routing.RouteCollection,System.String,Microsoft.AspNet.SignalR.HubConfiguration,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Initializes the hub route using specified configuration. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <param name="path">The path of the hubs route.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <param name="build">An action to further configure the OWIN pipeline.</param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.SignalRRouteExtensions.MapHubs(System.Web.Routing.RouteCollection,System.String,System.String,Microsoft.AspNet.SignalR.HubConfiguration,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Initializes the hub route using specified configuration. |
| | | </summary> |
| | | <param name="routes">The route table.</param> |
| | | <param name="name">The name of the route.</param> |
| | | <param name="path">The path of the hubs route.</param> |
| | | <param name="configuration">Configuration options.</param> |
| | | <param name="build"></param> |
| | | <returns>The registered route.</returns> |
| | | </member> |
| | | </members> |
| | | </doc> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <doc> |
| | | <assembly> |
| | | <name>Microsoft.Owin.Host.SystemWeb</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="T:Owin.Loader.DefaultLoader"> |
| | | <summary> |
| | | Locates the startup class based on the following convention: |
| | | AssemblyName.Startup, with a method named Configuration |
| | | </summary> |
| | | </member> |
| | | <member name="M:Owin.Loader.DefaultLoader.#ctor"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="M:Owin.Loader.DefaultLoader.#ctor(System.Func{System.String,System.Collections.Generic.IList{System.String},System.Action{Owin.IAppBuilder}})"> |
| | | <summary> |
| | | Allows for a fallback loader to be specified. |
| | | </summary> |
| | | <param name="next"></param> |
| | | </member> |
| | | <member name="M:Owin.Loader.DefaultLoader.#ctor(System.Func{System.String,System.Collections.Generic.IList{System.String},System.Action{Owin.IAppBuilder}},System.Func{System.Type,System.Object})"> |
| | | <summary> |
| | | Allows for a fallback loader and a Dependency Injection activator to be specified. |
| | | </summary> |
| | | <param name="next"></param> |
| | | <param name="activator"></param> |
| | | </member> |
| | | <member name="M:Owin.Loader.DefaultLoader.#ctor(System.Func{System.String,System.Collections.Generic.IList{System.String},System.Action{Owin.IAppBuilder}},System.Func{System.Type,System.Object},System.Collections.Generic.IEnumerable{System.Reflection.Assembly})"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="next"></param> |
| | | <param name="activator"></param> |
| | | <param name="referencedAssemblies"></param> |
| | | </member> |
| | | <member name="M:Owin.Loader.DefaultLoader.Load(System.String,System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Executes the loader, searching for the entry point by name. |
| | | </summary> |
| | | <param name="startupName">The name of the assembly and type entry point</param> |
| | | <param name="errorDetails"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.Loader.DefaultLoader.DotByDot(System.String)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="text"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Owin.Loader.NullLoader"> |
| | | <summary> |
| | | A default fallback loader that does nothing. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Owin.Loader.NullLoader.Load(System.String,System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | A placeholder method that always returns null. |
| | | </summary> |
| | | <param name="startup"></param> |
| | | <param name="errors"></param> |
| | | <returns>null.</returns> |
| | | </member> |
| | | <member name="P:Owin.Loader.NullLoader.Instance"> |
| | | <summary> |
| | | A singleton instance of the NullLoader type. |
| | | </summary> |
| | | </member> |
| | | <member name="T:SharedResourceNamespace.LoaderResources"> |
| | | <summary> |
| | | A strongly-typed resource class, for looking up localized strings, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.ResourceManager"> |
| | | <summary> |
| | | Returns the cached ResourceManager instance used by this class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.Culture"> |
| | | <summary> |
| | | Overrides the current thread's CurrentUICulture property for all |
| | | resource lookups using this strongly typed resource class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.AssemblyNotFound"> |
| | | <summary> |
| | | Looks up a localized string similar to For the app startup parameter value '{0}', the assembly '{1}' was not found.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.ClassNotFoundInAssembly"> |
| | | <summary> |
| | | Looks up a localized string similar to For the app startup parameter value '{0}', the class '{1}' was not found in assembly '{2}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.Exception_AttributeNameConflict"> |
| | | <summary> |
| | | Looks up a localized string similar to The OwinStartup attribute discovered in assembly '{0}' referencing startup type '{1}' conflicts with the attribute in assembly '{2}' referencing startup type '{3}' because they have the same FriendlyName '{4}'. Remove or rename one of the attributes, or reference the desired type directly.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.Exception_StartupTypeConflict"> |
| | | <summary> |
| | | Looks up a localized string similar to The discovered startup type '{0}' conflicts with the type '{1}'. Remove or rename one of the types, or reference the desired type directly.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.FriendlyNameMismatch"> |
| | | <summary> |
| | | Looks up a localized string similar to The OwinStartupAttribute.FriendlyName value '{0}' does not match the given value '{1}' in Assembly '{2}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.MethodNotFoundInClass"> |
| | | <summary> |
| | | Looks up a localized string similar to No '{0}' method was found in class '{1}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.NoAssemblyWithStartupClass"> |
| | | <summary> |
| | | Looks up a localized string similar to No assembly found containing a Startup or [AssemblyName].Startup class.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.NoOwinStartupAttribute"> |
| | | <summary> |
| | | Looks up a localized string similar to No assembly found containing an OwinStartupAttribute.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.StartupTypePropertyEmpty"> |
| | | <summary> |
| | | Looks up a localized string similar to The OwinStartupAttribute.StartupType value is empty in Assembly '{0}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.StartupTypePropertyMissing"> |
| | | <summary> |
| | | Looks up a localized string similar to The type '{0}' referenced from assembly '{1}' does not define a property 'StartupType' of type 'Type'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.TypeOrMethodNotFound"> |
| | | <summary> |
| | | Looks up a localized string similar to The given type or method '{0}' was not found. Try specifying the Assembly.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:SharedResourceNamespace.LoaderResources.UnexpectedMethodSignature"> |
| | | <summary> |
| | | Looks up a localized string similar to The '{0}' method on class '{1}' does not have the expected signature 'void {0}(IAppBuilder)'.. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager"> |
| | | <summary> |
| | | This handles cookies that are limited by per cookie length. It breaks down long cookies for responses, and reassembles them |
| | | from requests. The cookies are stored in the System.Web object model rather than directly in the headers. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.#ctor"> |
| | | <summary> |
| | | This handles cookies that are limited by per cookie length. It breaks down long cookies for responses, and reassembles them |
| | | from requests. The cookies are stored in the System.Web object model rather than directly in the headers. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.GetRequestCookie(Microsoft.Owin.IOwinContext,System.String)"> |
| | | <summary> |
| | | Get the reassembled cookie. Non chunked cookies are returned normally. |
| | | Cookies with missing chunks just have their "chunks:XX" header returned. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <returns>The reassembled cookie, if any, or null.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.AppendResponseCookie(Microsoft.Owin.IOwinContext,System.String,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Appends a new response cookie to the Set-Cookie header. If the cookie is larger than the given size limit |
| | | then it will be broken down into multiple cookies as follows: |
| | | Set-Cookie: CookieName=chunks:3; path=/ |
| | | Set-Cookie: CookieNameC1=Segment1; path=/ |
| | | Set-Cookie: CookieNameC2=Segment2; path=/ |
| | | Set-Cookie: CookieNameC3=Segment3; path=/ |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.DeleteCookie(Microsoft.Owin.IOwinContext,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Deletes the cookie with the given key by setting an expired state. If a matching chunked cookie exists on |
| | | the request, delete each chunk. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.Fallback"> |
| | | <summary> |
| | | A fallback manager used if HttpContextBase can't be located. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.ChunkSize"> |
| | | <summary> |
| | | The maximum size of cookie to send back to the client. If a cookie exceeds this size it will be broken down into multiple |
| | | cookies. Set this value to null to disable this behavior. The default is 4090 characters, which is supported by all |
| | | common browsers. |
| | | |
| | | Note that browsers may also have limits on the total size of all cookies per domain, and on the number of cookies per domain. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager.ThrowForPartialCookies"> |
| | | <summary> |
| | | Throw if not all chunks of a cookie are available on a request for re-assembly. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.DataProtection.MachineKeyDataProtectionProvider"> |
| | | <summary> |
| | | Used to provide the data protection services that are derived from the MachineKey API. It is the best choice of |
| | | data protection when you application is hosted by ASP.NET and all servers in the farm are running with the same Machine Key values. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.DataProtection.MachineKeyDataProtectionProvider.Create(System.String[])"> |
| | | <summary> |
| | | Returns a new instance of IDataProtection for the provider. |
| | | </summary> |
| | | <param name="purposes">Additional entropy used to ensure protected data may only be unprotected for the correct purposes.</param> |
| | | <returns>An instance of a data protection service</returns> |
| | | </member> |
| | | <member name="T:System.Web.HttpContextBaseExtensions"> |
| | | <summary> |
| | | Provides extension methods for <see cref="T:System.Web.HttpContextBase"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:System.Web.HttpContextBaseExtensions.GetOwinContext(System.Web.HttpContextBase)"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.Owin.IOwinContext"/> for the current request. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:System.Web.HttpContextBaseExtensions.GetOwinContext(System.Web.HttpRequestBase)"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.Owin.IOwinContext"/> for the current request. |
| | | </summary> |
| | | <param name="request"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:System.Web.HttpContextExtensions"> |
| | | <summary> |
| | | Provides extension methods for <see cref="T:System.Web.HttpContext"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:System.Web.HttpContextExtensions.GetOwinContext(System.Web.HttpContext)"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.Owin.IOwinContext"/> for the current request. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:System.Web.HttpContextExtensions.GetOwinContext(System.Web.HttpRequest)"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.Owin.IOwinContext"/> for the current request. |
| | | </summary> |
| | | <param name="request"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.OwinHttpHandler"> |
| | | <summary> |
| | | Processes requests from System.Web as OWIN requests. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.#ctor"> |
| | | <summary> |
| | | Processes requests using the default OWIN application. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.BeginProcessRequest(System.Web.HttpContextBase,System.AsyncCallback,System.Object)"> |
| | | <summary> |
| | | Initiates an asynchronous call to the HTTP handler. |
| | | </summary> |
| | | <param name="httpContext"> |
| | | An System.Web.HttpContextBase object that provides references to intrinsic server |
| | | objects (for example, Request, Response, Session, and Server) used to service |
| | | HTTP requests. |
| | | </param> |
| | | <param name="callback"> |
| | | The System.AsyncCallback to call when the asynchronous method call is complete. |
| | | If callback is null, the delegate is not called. |
| | | </param> |
| | | <param name="extraData"> |
| | | Any extra data needed to process the request. |
| | | </param> |
| | | <returns> |
| | | An System.IAsyncResult that contains information about the status of the process. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.EndProcessRequest(System.IAsyncResult)"> |
| | | <summary> |
| | | Provides an asynchronous process End method when the process ends. |
| | | </summary> |
| | | <param name="result"> |
| | | An System.IAsyncResult that contains information about the status of the process. |
| | | </param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.IsReusable"> |
| | | <summary> |
| | | Gets a value indicating whether another request can use the System.Web.IHttpHandler instance. |
| | | </summary> |
| | | <returns> |
| | | true. |
| | | </returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.OwinRouteHandler"> |
| | | <summary> |
| | | Processes a route through an OWIN pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.OwinRouteHandler.#ctor(System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Initialize an OwinRouteHandler |
| | | </summary> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.OwinRouteHandler.GetHttpHandler(System.Web.Routing.RequestContext)"> |
| | | <summary> |
| | | Provides the object that processes the request. |
| | | </summary> |
| | | <returns> |
| | | An object that processes the request. |
| | | </returns> |
| | | <param name="requestContext">An object that encapsulates information about the request.</param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.PreApplicationStart"> |
| | | <summary> |
| | | Registers the OWIN request processing module at application startup. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.PreApplicationStart.Initialize"> |
| | | <summary> |
| | | Registers the OWIN request processing module. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.Resources"> |
| | | <summary> |
| | | A strongly-typed resource class, for looking up localized strings, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.ResourceManager"> |
| | | <summary> |
| | | Returns the cached ResourceManager instance used by this class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Culture"> |
| | | <summary> |
| | | Overrides the current thread's CurrentUICulture property for all |
| | | resource lookups using this strongly typed resource class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_AppLoderFailure"> |
| | | <summary> |
| | | Looks up a localized string similar to The following errors occurred while attempting to load the app.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_CannotRegisterAfterHeadersSent"> |
| | | <summary> |
| | | Looks up a localized string similar to Cannot register for 'OnSendingHeaders' event after response headers have been sent.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_CookieLimitTooSmall"> |
| | | <summary> |
| | | Looks up a localized string similar to The cookie key and options are larger than ChunksSize, leaving no room for data.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_DuplicateKey"> |
| | | <summary> |
| | | Looks up a localized string similar to The key '{0}' is already present in the dictionary.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_HowToDisableAutoAppStartup"> |
| | | <summary> |
| | | Looks up a localized string similar to To disable OWIN startup discovery, add the appSetting owin:AutomaticAppStartup with a value of "false" in your web.config.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_HowToSpecifyAppStartup"> |
| | | <summary> |
| | | Looks up a localized string similar to To specify the OWIN startup Assembly, Class, or Method, add the appSetting owin:AppStartup with the fully qualified startup class or configuration method name in your web.config.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_ImcompleteChunkedCookie"> |
| | | <summary> |
| | | Looks up a localized string similar to The chunked cookie is incomplete. Only {0} of the expected {1} chunks were found, totaling {2} characters. A client size limit may have been exceeded.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Exception_UnsupportedPipelineStage"> |
| | | <summary> |
| | | Looks up a localized string similar to The given stage '{0}' is not supported.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.HttpContext_OwinEnvironmentNotFound"> |
| | | <summary> |
| | | Looks up a localized string similar to No owin.Environment item was found in the context.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_ClientCertException"> |
| | | <summary> |
| | | Looks up a localized string similar to An exception was thrown while trying to load the client certificate:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_EntryPointException"> |
| | | <summary> |
| | | Looks up a localized string similar to The OWIN entry point threw an exception:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_OwinCallContextCallbackException"> |
| | | <summary> |
| | | Looks up a localized string similar to The IAsyncResult callback for OwinCallHandler threw an exception:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_RegisterModuleException"> |
| | | <summary> |
| | | Looks up a localized string similar to Failed to register the OWIN module:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_RequestDisconnectCallbackExceptions"> |
| | | <summary> |
| | | Looks up a localized string similar to The application threw one or more exceptions when notified of a client disconnect:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_ShutdownDetectionSetupException"> |
| | | <summary> |
| | | Looks up a localized string similar to Shutdown detection setup failed:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_ShutdownException"> |
| | | <summary> |
| | | Looks up a localized string similar to One or more exceptions were thrown during app pool shutdown:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_TimerCallbackException"> |
| | | <summary> |
| | | Looks up a localized string similar to An exception was thrown from a timer callback:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_WebSocketException"> |
| | | <summary> |
| | | Looks up a localized string similar to An exception was thrown while processing the WebSocket:. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_WebSocketsSupportDetected"> |
| | | <summary> |
| | | Looks up a localized string similar to Support for WebSockets has been detected.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.Resources.Trace_WebSocketsSupportNotDetected"> |
| | | <summary> |
| | | Looks up a localized string similar to No support for WebSockets has been detected.. |
| | | </summary> |
| | | </member> |
| | | <member name="T:System.Web.Routing.RouteCollectionExtensions"> |
| | | <summary> |
| | | Provides extension methods for registering OWIN applications as System.Web routes. |
| | | </summary> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinPath(System.Web.Routing.RouteCollection,System.String)"> |
| | | <summary> |
| | | Registers a route for the default OWIN application. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="pathBase">The route path to map to the default OWIN application.</param> |
| | | <returns>The created route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinPath``1(System.Web.Routing.RouteCollection,System.String,``0)"> |
| | | <summary> |
| | | Registers a route for a specific OWIN application entry point. |
| | | </summary> |
| | | <typeparam name="TApp">The OWIN application entry point type.</typeparam> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="pathBase">The route path to map to the given OWIN application.</param> |
| | | <param name="app">The OWIN application entry point.</param> |
| | | <returns>The created route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinPath(System.Web.Routing.RouteCollection,System.String,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Invokes the System.Action startup delegate to build the OWIN application |
| | | and then registers a route for it on the given path. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="pathBase">The route path to map to the given OWIN application.</param> |
| | | <param name="startup">A System.Action delegate invoked to build the OWIN application.</param> |
| | | <returns>The created route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinPath(System.Web.Routing.RouteCollection,System.String,System.String)"> |
| | | <summary> |
| | | Registers a route for the default OWIN application. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="name">The given name of the route.</param> |
| | | <param name="pathBase">The route path to map to the default OWIN application.</param> |
| | | <returns>The created route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinPath``1(System.Web.Routing.RouteCollection,System.String,System.String,``0)"> |
| | | <summary> |
| | | Registers a route for a specific OWIN application entry point. |
| | | </summary> |
| | | <typeparam name="TApp">The OWIN application entry point type.</typeparam> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="name">The given name of the route.</param> |
| | | <param name="pathBase">The route path to map to the given OWIN application.</param> |
| | | <param name="app">The OWIN application entry point.</param> |
| | | <returns>The created route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinPath(System.Web.Routing.RouteCollection,System.String,System.String,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Invokes the System.Action startup delegate to build the OWIN application |
| | | and then registers a route for it on the given path. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="name">The given name of the route.</param> |
| | | <param name="pathBase">The route path to map to the given OWIN application.</param> |
| | | <param name="startup">A System.Action delegate invoked to build the OWIN application.</param> |
| | | <returns>The created route.</returns> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.Web.Routing.RouteValueDictionary,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="defaults">The values to use if the URL does not contain all the parameters.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.Web.Routing.RouteValueDictionary,System.Web.Routing.RouteValueDictionary,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="defaults">The values to use if the URL does not contain all the parameters.</param> |
| | | <param name="constraints">A regular expression that specifies valid values for a URL parameter.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.Web.Routing.RouteValueDictionary,System.Web.Routing.RouteValueDictionary,System.Web.Routing.RouteValueDictionary,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="defaults">The values to use if the URL does not contain all the parameters.</param> |
| | | <param name="constraints">A regular expression that specifies valid values for a URL parameter.</param> |
| | | <param name="dataTokens">Custom values that are passed to the route handler, but which are not used to determine whether the route matches a specific URL pattern. These values are passed to the route handler, where they can be used for processing the request.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.String,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeName">The name of the route.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.String,System.Web.Routing.RouteValueDictionary,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeName">The name of the route.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="defaults">The values to use if the URL does not contain all the parameters.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.String,System.Web.Routing.RouteValueDictionary,System.Web.Routing.RouteValueDictionary,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeName">The name of the route.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="defaults">The values to use if the URL does not contain all the parameters.</param> |
| | | <param name="constraints">A regular expression that specifies valid values for a URL parameter.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="M:System.Web.Routing.RouteCollectionExtensions.MapOwinRoute(System.Web.Routing.RouteCollection,System.String,System.String,System.Web.Routing.RouteValueDictionary,System.Web.Routing.RouteValueDictionary,System.Web.Routing.RouteValueDictionary,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Provides a way to define routes for an OWIN pipeline. |
| | | </summary> |
| | | <param name="routes">The route collection.</param> |
| | | <param name="routeName">The name of the route.</param> |
| | | <param name="routeUrl">The URL pattern for the route.</param> |
| | | <param name="defaults">The values to use if the URL does not contain all the parameters.</param> |
| | | <param name="constraints">A regular expression that specifies valid values for a URL parameter.</param> |
| | | <param name="dataTokens">Custom values that are passed to the route handler, but which are not used to determine whether the route matches a specific URL pattern. These values are passed to the route handler, where they can be used for processing the request.</param> |
| | | <param name="startup">The method to initialize the pipeline that processes requests for the route.</param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Host.SystemWeb.SystemWebCookieManager"> |
| | | <summary> |
| | | An implementation of ICookieManager that uses the System.Web.HttpContextBase object model. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebCookieManager.#ctor"> |
| | | <summary> |
| | | Creates a new instance of SystemWebCookieManager. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebCookieManager.GetRequestCookie(Microsoft.Owin.IOwinContext,System.String)"> |
| | | <summary> |
| | | Reads the requested cookie from System.Web.HttpContextBase.Request.Cookies. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebCookieManager.AppendResponseCookie(Microsoft.Owin.IOwinContext,System.String,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Appends the requested cookie to System.Web.HttpContextBase.Response.Cookies. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Host.SystemWeb.SystemWebCookieManager.DeleteCookie(Microsoft.Owin.IOwinContext,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Deletes the requested cookie by appending an expired cookie to System.Web.HttpContextBase.Response.Cookies. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Host.SystemWeb.SystemWebCookieManager.Fallback"> |
| | | <summary> |
| | | A fallback manager used if HttpContextBase can't be located. |
| | | </summary> |
| | | </member> |
| | | </members> |
| | | </doc> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <doc> |
| | | <assembly> |
| | | <name>Microsoft.Owin.Security</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="T:Microsoft.Owin.Security.AppBuilderSecurityExtensions"> |
| | | <summary> |
| | | Provides extensions methods for app.Property values that are only needed by implementations of authentication middleware. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AppBuilderSecurityExtensions.GetDefaultSignInAsAuthenticationType(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Returns the previously set AuthenticationType that external sign in middleware should use when the |
| | | browser navigates back to their return url. |
| | | </summary> |
| | | <param name="app">App builder passed to the application startup code</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AppBuilderSecurityExtensions.SetDefaultSignInAsAuthenticationType(Owin.IAppBuilder,System.String)"> |
| | | <summary> |
| | | Called by middleware to change the name of the AuthenticationType that external middleware should use |
| | | when the browser navigates back to their return url. |
| | | </summary> |
| | | <param name="app">App builder passed to the application startup code</param> |
| | | <param name="authenticationType">AuthenticationType that external middleware should sign in as.</param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationMode"> |
| | | <summary> |
| | | Controls the behavior of authentication middleware |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.Security.AuthenticationMode.Active"> |
| | | <summary> |
| | | In Active mode the authentication middleware will alter the user identity as the request arrives, and |
| | | will also alter a plain 401 as the response leaves. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.Security.AuthenticationMode.Passive"> |
| | | <summary> |
| | | In Passive mode the authentication middleware will only provide user identity when asked, and will only |
| | | alter 401 responses where the authentication type named in the extra challenge data. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationOptions"> |
| | | <summary> |
| | | Base Options for all authentication middleware |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationOptions.#ctor(System.String)"> |
| | | <summary> |
| | | Initialize properties of AuthenticationOptions base class |
| | | </summary> |
| | | <param name="authenticationType">Assigned to the AuthenticationType property</param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationOptions.AuthenticationType"> |
| | | <summary> |
| | | The AuthenticationType in the options corresponds to the IIdentity AuthenticationType property. A different |
| | | value may be assigned in order to use the same authentication middleware type more than once in a pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationOptions.AuthenticationMode"> |
| | | <summary> |
| | | If Active the authentication middleware alter the request user coming in and |
| | | alter 401 Unauthorized responses going out. If Passive the authentication middleware will only provide |
| | | identity and alter responses when explicitly indicated by the AuthenticationType. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationOptions.Description"> |
| | | <summary> |
| | | Additional information about the authentication type which is made available to the application. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Constants"> |
| | | <summary> |
| | | String constants used only by the Security assembly |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.Security.Constants.DefaultSignInAsAuthenticationType"> |
| | | <summary> |
| | | Used by middleware extension methods to coordinate the default value Options property SignInAsAuthenticationType |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.DataProtection.IDataProtectionProvider"> |
| | | <summary> |
| | | Factory used to create IDataProtection instances |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.DataProtection.IDataProtectionProvider.Create(System.String[])"> |
| | | <summary> |
| | | Returns a new instance of IDataProtection for the provider. |
| | | </summary> |
| | | <param name="purposes">Additional entropy used to ensure protected data may only be unprotected for the correct purposes.</param> |
| | | <returns>An instance of a data protection service</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.DataProtection.IDataProtector"> |
| | | <summary> |
| | | Service used to protect and unprotect data |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.DataProtection.IDataProtector.Protect(System.Byte[])"> |
| | | <summary> |
| | | Called to protect user data. |
| | | </summary> |
| | | <param name="userData">The original data that must be protected</param> |
| | | <returns>A different byte array that may be unprotected or altered only by software that has access to |
| | | the an identical IDataProtection service.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.DataProtection.IDataProtector.Unprotect(System.Byte[])"> |
| | | <summary> |
| | | Called to unprotect user data |
| | | </summary> |
| | | <param name="protectedData">The byte array returned by a call to Protect on an identical IDataProtection service.</param> |
| | | <returns>The byte array identical to the original userData passed to Protect.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler`1"> |
| | | <summary> |
| | | Base class for the per-request work performed by most authentication middleware. |
| | | </summary> |
| | | <typeparam name="TOptions">Specifies which type for of AuthenticationOptions property</typeparam> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler"> |
| | | <summary> |
| | | Base class for the per-request work performed by most authentication middleware. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.TeardownAsync"> |
| | | <summary> |
| | | Called once per request after Initialize and Invoke. |
| | | </summary> |
| | | <returns>async completion</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.InvokeAsync"> |
| | | <summary> |
| | | Called once by common code after initialization. If an authentication middleware responds directly to |
| | | specifically known paths it must override this virtual, compare the request path to it's known paths, |
| | | provide any response information as appropriate, and true to stop further processing. |
| | | </summary> |
| | | <returns>Returning false will cause the common code to call the next middleware in line. Returning true will |
| | | cause the common code to begin the async completion journey without calling the rest of the middleware |
| | | pipeline.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.AuthenticateAsync"> |
| | | <summary> |
| | | Causes the authentication logic in AuthenticateCore to be performed for the current request |
| | | at most once and returns the results. Calling Authenticate more than once will always return |
| | | the original value. |
| | | |
| | | This method should always be called instead of calling AuthenticateCore directly. |
| | | </summary> |
| | | <returns>The ticket data provided by the authentication logic</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.AuthenticateCoreAsync"> |
| | | <summary> |
| | | The core authentication logic which must be provided by the handler. Will be invoked at most |
| | | once per request. Do not call directly, call the wrapping Authenticate method instead. |
| | | </summary> |
| | | <returns>The ticket data provided by the authentication logic</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.ApplyResponseAsync"> |
| | | <summary> |
| | | Causes the ApplyResponseCore to be invoked at most once per request. This method will be |
| | | invoked either earlier, when the response headers are sent as a result of a response write or flush, |
| | | or later, as the last step when the original async call to the middleware is returning. |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.ApplyResponseCoreAsync"> |
| | | <summary> |
| | | Core method that may be overridden by handler. The default behavior is to call two common response |
| | | activities, one that deals with sign-in/sign-out concerns, and a second to deal with 401 challenges. |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.ApplyResponseGrantAsync"> |
| | | <summary> |
| | | Override this method to dela with sign-in/sign-out concerns, if an authentication scheme in question |
| | | deals with grant/revoke as part of it's request flow. (like setting/deleting cookies) |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.ApplyResponseChallengeAsync"> |
| | | <summary> |
| | | Override this method to deal with 401 challenge concerns, if an authentication scheme in question |
| | | deals an authentication interaction as part of it's request flow. (like adding a response header, or |
| | | changing the 401 result to 302 of a login page or external sign-in location.) |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.AuthenticationHandler`1.Initialize(`0,Microsoft.Owin.IOwinContext)"> |
| | | <summary> |
| | | Initialize is called once per request to contextualize this instance with appropriate state. |
| | | </summary> |
| | | <param name="options">The original options passed by the application control behavior</param> |
| | | <param name="context">The utility object to observe the current request and response</param> |
| | | <returns>async completion</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationTicket"> |
| | | <summary> |
| | | Contains user identity information as well as additional authentication state. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationTicket.#ctor(System.Security.Claims.ClaimsIdentity,Microsoft.Owin.Security.AuthenticationProperties)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationTicket"/> class |
| | | </summary> |
| | | <param name="identity"></param> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationTicket.Identity"> |
| | | <summary> |
| | | Gets the authenticated user identity. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationTicket.Properties"> |
| | | <summary> |
| | | Additional state values for the authentication session. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.ICertificateValidator"> |
| | | <summary> |
| | | Interface for providing pinned certificate validation, which checks HTTPS |
| | | communication against a known good list of certificates to protect against |
| | | compromised or rogue CAs issuing certificates for hosts without the |
| | | knowledge of the host owner. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.ICertificateValidator.Validate(System.Object,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)"> |
| | | <summary> |
| | | Verifies the remote Secure Sockets Layer (SSL) certificate used for authentication. |
| | | </summary> |
| | | <param name="sender">An object that contains state information for this validation.</param> |
| | | <param name="certificate">The certificate used to authenticate the remote party.</param> |
| | | <param name="chain">The chain of certificate authorities associated with the remote certificate.</param> |
| | | <param name="sslPolicyErrors">One or more errors associated with the remote certificate.</param> |
| | | <returns>A Boolean value that determines whether the specified certificate is accepted for authentication.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.CertificateThumbprintValidator"> |
| | | <summary> |
| | | Provides pinned certificate validation based on the certificate thumbprint. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.CertificateThumbprintValidator.#ctor(System.Collections.Generic.IEnumerable{System.String})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.CertificateThumbprintValidator"/> class. |
| | | </summary> |
| | | <param name="validThumbprints">A set of thumbprints which are valid for an HTTPS request.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.CertificateThumbprintValidator.Validate(System.Object,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)"> |
| | | <summary> |
| | | Validates that the certificate thumbprints in the signing chain match at least one whitelisted thumbprint. |
| | | </summary> |
| | | <param name="sender">An object that contains state information for this validation.</param> |
| | | <param name="certificate">The certificate used to authenticate the remote party.</param> |
| | | <param name="chain">The chain of certificate authorities associated with the remote certificate.</param> |
| | | <param name="sslPolicyErrors">One or more errors associated with the remote certificate.</param> |
| | | <returns>A Boolean value that determines whether the specified certificate is accepted for authentication.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Provider.BaseContext`1"> |
| | | <summary> |
| | | Base class used for certain event contexts |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Notifications.BaseNotification`1.HandleResponse"> |
| | | <summary> |
| | | Discontinue all processing for this request and return to the client. |
| | | The caller is responsible for generating the full response. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Notifications.BaseNotification`1.SkipToNextMiddleware"> |
| | | <summary> |
| | | Discontinue processing the request in the current middleware and pass control to the next one. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.Security.Notifications.NotificationResultState.Continue"> |
| | | <summary> |
| | | Continue with normal processing. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.Security.Notifications.NotificationResultState.Skipped"> |
| | | <summary> |
| | | Discontinue processing the request in the current middleware and pass control to the next one. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.Security.Notifications.NotificationResultState.HandledResponse"> |
| | | <summary> |
| | | Discontinue all processing for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Notifications.RedirectToIdentityProviderNotification`2.HandleResponse"> |
| | | <summary> |
| | | Discontinue all processing for this request and return to the client. |
| | | The caller is responsible for generating the full response. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Notifications.SecurityTokenValidatedNotification`2.AuthenticationTicket"> |
| | | <summary> |
| | | Gets or set the <see cref="P:Microsoft.Owin.Security.Notifications.SecurityTokenValidatedNotification`2.AuthenticationTicket"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Notifications.SecurityTokenValidatedNotification`2.ProtocolMessage"> |
| | | <summary> |
| | | Gets or sets the Protocol message |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider"> |
| | | <summary> |
| | | Used to provide the data protection services that are derived from the Data Protection API. It is the best choice of |
| | | data protection when you application is not hosted by ASP.NET and all processes are running as the same domain identity. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider.#ctor"> |
| | | <summary> |
| | | Initializes a new DpapiDataProtectionProvider with a random application |
| | | name. This is only useful to protect data for the duration of the |
| | | current application execution. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider.#ctor(System.String)"> |
| | | <summary> |
| | | Initializes a new DpapiDataProtectionProvider which uses the given |
| | | appName as part of the protection algorithm |
| | | </summary> |
| | | <param name="appName">A user provided value needed to round-trip secured |
| | | data. The default value comes from the IAppBuilder.Properties["owin.AppName"] |
| | | when self-hosted.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider.Create(System.String[])"> |
| | | <summary> |
| | | Returns a new instance of IDataProtection for the provider. |
| | | </summary> |
| | | <param name="purposes">Additional entropy used to ensure protected data may only be unprotected for the correct purposes.</param> |
| | | <returns>An instance of a data protection service</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Infrastructure.SecurityHelper"> |
| | | <summary> |
| | | Helper code used when implementing authentication middleware |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.SecurityHelper.#ctor(Microsoft.Owin.IOwinContext)"> |
| | | <summary> |
| | | Helper code used when implementing authentication middleware |
| | | </summary> |
| | | <param name="context"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.SecurityHelper.AddUserIdentity(System.Security.Principal.IIdentity)"> |
| | | <summary> |
| | | Add an additional ClaimsIdentity to the ClaimsPrincipal in the "server.User" environment key |
| | | </summary> |
| | | <param name="identity"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.SecurityHelper.LookupChallenge(System.String,Microsoft.Owin.Security.AuthenticationMode)"> |
| | | <summary> |
| | | Find response challenge details for a specific authentication middleware |
| | | </summary> |
| | | <param name="authenticationType">The authentication type to look for</param> |
| | | <param name="authenticationMode">The authentication mode the middleware is running under</param> |
| | | <returns>The information instructing the middleware how it should behave</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.SecurityHelper.LookupSignIn(System.String)"> |
| | | <summary> |
| | | Find response sign-in details for a specific authentication middleware |
| | | </summary> |
| | | <param name="authenticationType">The authentication type to look for</param> |
| | | <returns>The information instructing the middleware how it should behave</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Infrastructure.SecurityHelper.LookupSignOut(System.String,Microsoft.Owin.Security.AuthenticationMode)"> |
| | | <summary> |
| | | Find response sign-out details for a specific authentication middleware |
| | | </summary> |
| | | <param name="authenticationType">The authentication type to look for</param> |
| | | <param name="authenticationMode">The authentication mode the middleware is running under</param> |
| | | <returns>The information instructing the middleware how it should behave</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Provider.EndpointContext`1"> |
| | | <summary> |
| | | Base class used for certain event contexts |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Provider.EndpointContext`1.#ctor(Microsoft.Owin.IOwinContext,`0)"> |
| | | <summary> |
| | | Creates an instance of this context |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.Provider.EndpointContext`1.RequestCompleted"> |
| | | <summary> |
| | | Prevents the request from being processed further by other components. |
| | | IsRequestCompleted becomes true after calling. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Provider.EndpointContext`1.IsRequestCompleted"> |
| | | <summary> |
| | | True if the request should not be processed further by other components. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.Resources"> |
| | | <summary> |
| | | A strongly-typed resource class, for looking up localized strings, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Resources.ResourceManager"> |
| | | <summary> |
| | | Returns the cached ResourceManager instance used by this class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Resources.Culture"> |
| | | <summary> |
| | | Overrides the current thread's CurrentUICulture property for all |
| | | resource lookups using this strongly typed resource class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Resources.Exception_AuthenticationTokenDoesNotProvideSyncMethods"> |
| | | <summary> |
| | | Looks up a localized string similar to The AuthenticationTokenProvider's required synchronous events have not been registered.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Resources.Exception_DefaultDpapiRequiresAppNameKey"> |
| | | <summary> |
| | | Looks up a localized string similar to The default data protection provider may only be used when the IAppBuilder.Properties contains an appropriate 'host.AppName' key.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Resources.Exception_MissingDefaultSignInAsAuthenticationType"> |
| | | <summary> |
| | | Looks up a localized string similar to A default value for SignInAsAuthenticationType was not found in IAppBuilder Properties. This can happen if your authentication middleware are added in the wrong order, or if one is missing.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.Resources.Exception_UnhookAuthenticationStateType"> |
| | | <summary> |
| | | Looks up a localized string similar to The state passed to UnhookAuthentication may only be the return value from HookAuthentication.. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.CertificateSubjectKeyIdentifierValidator"> |
| | | <summary> |
| | | Provides pinned certificate validation based on the subject key identifier of the certificate. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.CertificateSubjectKeyIdentifierValidator.#ctor(System.Collections.Generic.IEnumerable{System.String})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.CertificateSubjectKeyIdentifierValidator"/> class. |
| | | </summary> |
| | | <param name="validSubjectKeyIdentifiers">A set of subject key identifiers which are valid for an HTTPS request.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.CertificateSubjectKeyIdentifierValidator.Validate(System.Object,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)"> |
| | | <summary> |
| | | Verifies the remote Secure Sockets Layer (SSL) certificate used for authentication. |
| | | </summary> |
| | | <param name="sender">An object that contains state information for this validation.</param> |
| | | <param name="certificate">The certificate used to authenticate the remote party.</param> |
| | | <param name="chain">The chain of certificate authorities associated with the remote certificate.</param> |
| | | <param name="sslPolicyErrors">One or more errors associated with the remote certificate.</param> |
| | | <returns>A Boolean value that determines whether the specified certificate is accepted for authentication.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.SubjectPublicKeyInfoAlgorithm"> |
| | | <summary> |
| | | The algorithm used to generate the subject public key information blob hashes. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.CertificateSubjectPublicKeyInfoValidator"> |
| | | <summary> |
| | | Implements a cert pinning validator passed on |
| | | http://datatracker.ietf.org/doc/draft-ietf-websec-key-pinning/?include_text=1 |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.CertificateSubjectPublicKeyInfoValidator.#ctor(System.Collections.Generic.IEnumerable{System.String},Microsoft.Owin.Security.SubjectPublicKeyInfoAlgorithm)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.CertificateSubjectPublicKeyInfoValidator"/> class. |
| | | </summary> |
| | | <param name="validBase64EncodedSubjectPublicKeyInfoHashes">A collection of valid base64 encoded hashes of the certificate public key information blob.</param> |
| | | <param name="algorithm">The algorithm used to generate the hashes.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.CertificateSubjectPublicKeyInfoValidator.Validate(System.Object,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)"> |
| | | <summary> |
| | | Validates at least one SPKI hash is known. |
| | | </summary> |
| | | <param name="sender">An object that contains state information for this validation.</param> |
| | | <param name="certificate">The certificate used to authenticate the remote party.</param> |
| | | <param name="chain">The chain of certificate authorities associated with the remote certificate.</param> |
| | | <param name="sslPolicyErrors">One or more errors associated with the remote certificate.</param> |
| | | <returns>A Boolean value that determines whether the specified certificate is accepted for authentication.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Win32.NativeMethods.CryptEncodeObject(System.UInt32,System.IntPtr,Microsoft.Win32.NativeMethods.CERT_PUBLIC_KEY_INFO@,System.Byte[],System.UInt32@)"> |
| | | <summary> |
| | | Encodes a structure of the type indicated by the value of the lpszStructType parameter. |
| | | </summary> |
| | | <param name="dwCertEncodingType">Type of encoding used.</param> |
| | | <param name="lpszStructType">The high-order word is zero, the low-order word specifies the integer identifier for the type of the specified structure so |
| | | we can use the constants in http://msdn.microsoft.com/en-us/library/windows/desktop/aa378145%28v=vs.85%29.aspx</param> |
| | | <param name="pvStructInfo">A pointer to the structure to be encoded.</param> |
| | | <param name="pbEncoded">A pointer to a buffer to receive the encoded structure. This parameter can be NULL to retrieve the size of this information for memory allocation purposes.</param> |
| | | <param name="pcbEncoded">A pointer to a DWORD variable that contains the size, in bytes, of the buffer pointed to by the pbEncoded parameter.</param> |
| | | <returns></returns> |
| | | </member> |
| | | </members> |
| | | </doc> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <doc> |
| | | <assembly> |
| | | <name>Microsoft.Owin</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="T:Owin.AppBuilderUseExtensions"> |
| | | <summary> |
| | | Extension methods for <see cref="T:Owin.IAppBuilder"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Owin.AppBuilderUseExtensions.Use``1(Owin.IAppBuilder,System.Object[])"> |
| | | <summary> |
| | | Inserts a middleware into the OWIN pipeline. |
| | | </summary> |
| | | <typeparam name="T">The middleware type</typeparam> |
| | | <param name="app"></param> |
| | | <param name="args">Any additional arguments for the middleware constructor</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.AppBuilderUseExtensions.Run(Owin.IAppBuilder,System.Func{Microsoft.Owin.IOwinContext,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Inserts into the OWIN pipeline a middleware which does not have a next middleware reference. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="handler">An app that handles all requests</param> |
| | | </member> |
| | | <member name="M:Owin.AppBuilderUseExtensions.Use(Owin.IAppBuilder,System.Func{Microsoft.Owin.IOwinContext,System.Func{System.Threading.Tasks.Task},System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Inserts a middleware into the OWIN pipeline. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="handler">An app that handles the request or calls the given next Func</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Extensions.UseHandlerMiddleware"> |
| | | <summary> |
| | | Represents a middleware for executing in-line function middleware. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Extensions.UseHandlerMiddleware.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.Func{Microsoft.Owin.IOwinContext,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Extensions.UseHandlerMiddleware" /> class. |
| | | </summary> |
| | | <param name="next">The pointer to next middleware.</param> |
| | | <param name="handler">A function that handles all requests.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Extensions.UseHandlerMiddleware.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.Func{Microsoft.Owin.IOwinContext,System.Func{System.Threading.Tasks.Task},System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Extensions.UseHandlerMiddleware" /> class. |
| | | </summary> |
| | | <param name="next">The pointer to next middleware.</param> |
| | | <param name="handler">A function that handles the request or calls the given next function.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Extensions.UseHandlerMiddleware.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Invokes the handler for processing the request. |
| | | </summary> |
| | | <param name="environment">The OWIN context.</param> |
| | | <returns>The <see cref="T:System.Threading.Tasks.Task" /> object that represents the request operation.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.FormCollection"> |
| | | <summary> |
| | | Contains the parsed form values. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.ReadableStringCollection"> |
| | | <summary> |
| | | Accessors for query, forms, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.IReadableStringCollection"> |
| | | <summary> |
| | | Accessors for headers, query, forms, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IReadableStringCollection.Get(System.String)"> |
| | | <summary> |
| | | Get the associated value from the collection. Multiple values will be merged. |
| | | Returns null if the key is not present. |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IReadableStringCollection.GetValues(System.String)"> |
| | | <summary> |
| | | Get the associated values from the collection in their original format. |
| | | Returns null if the key is not present. |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IReadableStringCollection.Item(System.String)"> |
| | | <summary> |
| | | Get the associated value from the collection. Multiple values will be merged. |
| | | Returns null if the key is not present. |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ReadableStringCollection.#ctor(System.Collections.Generic.IDictionary{System.String,System.String[]})"> |
| | | <summary> |
| | | Create a new wrapper |
| | | </summary> |
| | | <param name="store"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ReadableStringCollection.Get(System.String)"> |
| | | <summary> |
| | | Get the associated value from the collection. Multiple values will be merged. |
| | | Returns null if the key is not present. |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ReadableStringCollection.GetValues(System.String)"> |
| | | <summary> |
| | | Get the associated values from the collection in their original format. |
| | | Returns null if the key is not present. |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ReadableStringCollection.GetEnumerator"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ReadableStringCollection.System#Collections#IEnumerable#GetEnumerator"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.ReadableStringCollection.Item(System.String)"> |
| | | <summary> |
| | | Get the associated value from the collection. Multiple values will be merged. |
| | | Returns null if the key is not present. |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.IFormCollection"> |
| | | <summary> |
| | | Contains the parsed form values. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.FormCollection.#ctor(System.Collections.Generic.IDictionary{System.String,System.String[]})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.FormCollection" /> class. |
| | | </summary> |
| | | <param name="store">The store for the form.</param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.HeaderDictionary"> |
| | | <summary> |
| | | Represents a wrapper for owin.RequestHeaders and owin.ResponseHeaders. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.IHeaderDictionary"> |
| | | <summary> |
| | | Represents a wrapper for owin.RequestHeaders and owin.ResponseHeaders. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.GetCommaSeparatedValues(System.String)"> |
| | | <summary> |
| | | Get the associated values from the collection separated into individual values. |
| | | Quoted values will not be split, and the quotes will be removed. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>the associated values from the collection separated into individual values, or null if the key is not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.Append(System.String,System.String)"> |
| | | <summary> |
| | | Add a new value. Appends to the header if already present |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="value">The header value.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.AppendValues(System.String,System.String[])"> |
| | | <summary> |
| | | Add new values. Each item remains a separate array entry. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.AppendCommaSeparatedValues(System.String,System.String[])"> |
| | | <summary> |
| | | Quotes any values containing comas, and then coma joins all of the values with any existing values. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.Set(System.String,System.String)"> |
| | | <summary> |
| | | Sets a specific header value. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="value">The header value.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.SetValues(System.String,System.String[])"> |
| | | <summary> |
| | | Sets the specified header values without modification. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IHeaderDictionary.SetCommaSeparatedValues(System.String,System.String[])"> |
| | | <summary> |
| | | Quotes any values containing comas, and then coma joins all of the values. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IHeaderDictionary.Item(System.String)"> |
| | | <summary> |
| | | Get or sets the associated value from the collection as a single string. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>the associated value from the collection as a single string or null if the key is not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.#ctor(System.Collections.Generic.IDictionary{System.String,System.String[]})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.HeaderDictionary" /> class. |
| | | </summary> |
| | | <param name="store">The underlying data store.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.GetEnumerator"> |
| | | <summary> |
| | | Returns an enumerator that iterates through a collection. |
| | | </summary> |
| | | <returns>An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.System#Collections#IEnumerable#GetEnumerator"> |
| | | <summary> |
| | | Returns an enumerator that iterates through a collection. |
| | | </summary> |
| | | <returns>An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Get(System.String)"> |
| | | <summary> |
| | | Get the associated value from the collection as a single string. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>the associated value from the collection as a single string or null if the key is not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.GetValues(System.String)"> |
| | | <summary> |
| | | Get the associated values from the collection without modification. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>the associated value from the collection without modification, or null if the key is not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.GetCommaSeparatedValues(System.String)"> |
| | | <summary> |
| | | Get the associated values from the collection separated into individual values. |
| | | Quoted values will not be split, and the quotes will be removed. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>the associated values from the collection separated into individual values, or null if the key is not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Append(System.String,System.String)"> |
| | | <summary> |
| | | Add a new value. Appends to the header if already present |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="value">The header value.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.AppendValues(System.String,System.String[])"> |
| | | <summary> |
| | | Add new values. Each item remains a separate array entry. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.AppendCommaSeparatedValues(System.String,System.String[])"> |
| | | <summary> |
| | | Quotes any values containing comas, and then coma joins all of the values with any existing values. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Set(System.String,System.String)"> |
| | | <summary> |
| | | Sets a specific header value. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="value">The header value.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.SetValues(System.String,System.String[])"> |
| | | <summary> |
| | | Sets the specified header values without modification. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.SetCommaSeparatedValues(System.String,System.String[])"> |
| | | <summary> |
| | | Quotes any values containing comas, and then coma joins all of the values. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="values">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Add(System.String,System.String[])"> |
| | | <summary> |
| | | Adds the given header and values to the collection. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="value">The header values.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.ContainsKey(System.String)"> |
| | | <summary> |
| | | Determines whether the <see cref="T:Microsoft.Owin.HeaderDictionary" /> contains a specific key. |
| | | </summary> |
| | | <param name="key">The key.</param> |
| | | <returns>true if the <see cref="T:Microsoft.Owin.HeaderDictionary" /> contains a specific key; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Remove(System.String)"> |
| | | <summary> |
| | | Removes the given header from the collection. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>true if the specified object was removed from the collection; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.TryGetValue(System.String,System.String[]@)"> |
| | | <summary> |
| | | Retrieves a value from the dictionary. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <param name="value">The value.</param> |
| | | <returns>true if the <see cref="T:Microsoft.Owin.HeaderDictionary" /> contains the key; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Add(System.Collections.Generic.KeyValuePair{System.String,System.String[]})"> |
| | | <summary> |
| | | Adds a new list of items to the collection. |
| | | </summary> |
| | | <param name="item">The item to add.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Clear"> |
| | | <summary> |
| | | Clears the entire list of objects. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Contains(System.Collections.Generic.KeyValuePair{System.String,System.String[]})"> |
| | | <summary> |
| | | Returns a value indicating whether the specified object occurs within this collection. |
| | | </summary> |
| | | <param name="item">The item.</param> |
| | | <returns>true if the specified object occurs within this collection; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.CopyTo(System.Collections.Generic.KeyValuePair{System.String,System.String[]}[],System.Int32)"> |
| | | <summary> |
| | | Copies the <see cref="T:Microsoft.Owin.HeaderDictionary" /> elements to a one-dimensional Array instance at the specified index. |
| | | </summary> |
| | | <param name="array">The one-dimensional Array that is the destination of the specified objects copied from the <see cref="T:Microsoft.Owin.HeaderDictionary" />.</param> |
| | | <param name="arrayIndex">The zero-based index in <paramref name="array" /> at which copying begins.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HeaderDictionary.Remove(System.Collections.Generic.KeyValuePair{System.String,System.String[]})"> |
| | | <summary> |
| | | Removes the given item from the the collection. |
| | | </summary> |
| | | <param name="item">The item.</param> |
| | | <returns>true if the specified object was removed from the collection; otherwise, false.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HeaderDictionary.Keys"> |
| | | <summary> |
| | | Gets an <see cref="T:System.Collections.ICollection" /> that contains the keys in the <see cref="T:Microsoft.Owin.HeaderDictionary" />;. |
| | | </summary> |
| | | <returns>An <see cref="T:System.Collections.ICollection" /> that contains the keys in the <see cref="T:Microsoft.Owin.HeaderDictionary" />.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HeaderDictionary.Values"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HeaderDictionary.Count"> |
| | | <summary> |
| | | Gets the number of elements contained in the <see cref="T:Microsoft.Owin.HeaderDictionary" />;. |
| | | </summary> |
| | | <returns>The number of elements contained in the <see cref="T:Microsoft.Owin.HeaderDictionary" />.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HeaderDictionary.IsReadOnly"> |
| | | <summary> |
| | | Gets a value that indicates whether the <see cref="T:Microsoft.Owin.HeaderDictionary" /> is in read-only mode. |
| | | </summary> |
| | | <returns>true if the <see cref="T:Microsoft.Owin.HeaderDictionary" /> is in read-only mode; otherwise, false.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HeaderDictionary.Item(System.String)"> |
| | | <summary> |
| | | Get or sets the associated value from the collection as a single string. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns>the associated value from the collection as a single string or null if the key is not present.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HeaderDictionary.System#Collections#Generic#IDictionary{System#String@System#String[]}#Item(System.String)"> |
| | | <summary> |
| | | Throws KeyNotFoundException if the key is not present. |
| | | </summary> |
| | | <param name="key">The header name.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.HostString"> |
| | | <summary> |
| | | Represents the host portion of a Uri can be used to construct Uri's properly formatted and encoded for use in |
| | | HTTP headers. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.#ctor(System.String)"> |
| | | <summary> |
| | | Creates a new HostString without modification. The value should be Unicode rather than punycode, and may have a port. |
| | | IPv4 and IPv6 addresses are also allowed, and also may have ports. |
| | | </summary> |
| | | <param name="value"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.ToString"> |
| | | <summary> |
| | | Returns the value as normalized by ToUriComponent(). |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.ToUriComponent"> |
| | | <summary> |
| | | Returns the value properly formatted and encoded for use in a URI in a HTTP header. |
| | | Any Unicode is converted to punycode. IPv6 addresses will have brackets added if they are missing. |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.FromUriComponent(System.String)"> |
| | | <summary> |
| | | Creates a new HostString from the given uri component. |
| | | Any punycode will be converted to Unicode. |
| | | </summary> |
| | | <param name="uriComponent"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.FromUriComponent(System.Uri)"> |
| | | <summary> |
| | | Creates a new HostString from the host and port of the give Uri instance. |
| | | Punycode will be converted to Unicode. |
| | | </summary> |
| | | <param name="uri"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.Equals(Microsoft.Owin.HostString)"> |
| | | <summary> |
| | | Compares the equality of the Value property, ignoring case. |
| | | </summary> |
| | | <param name="other"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.Equals(System.Object)"> |
| | | <summary> |
| | | Compares against the given object only if it is a HostString. |
| | | </summary> |
| | | <param name="obj"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.GetHashCode"> |
| | | <summary> |
| | | Gets a hash code for the value. |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.op_Equality(Microsoft.Owin.HostString,Microsoft.Owin.HostString)"> |
| | | <summary> |
| | | Compares the two instances for equality. |
| | | </summary> |
| | | <param name="left"></param> |
| | | <param name="right"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.HostString.op_Inequality(Microsoft.Owin.HostString,Microsoft.Owin.HostString)"> |
| | | <summary> |
| | | Compares the two instances for inequality. |
| | | </summary> |
| | | <param name="left"></param> |
| | | <param name="right"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.HostString.Value"> |
| | | <summary> |
| | | Returns the original value from the constructor. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.CookieManager"> |
| | | <summary> |
| | | An implementation of ICookieManager that writes directly to IOwinContext.Response.Cookies. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.ICookieManager"> |
| | | <summary> |
| | | An abstraction for reading request cookies and writing response cookies. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ICookieManager.GetRequestCookie(Microsoft.Owin.IOwinContext,System.String)"> |
| | | <summary> |
| | | Read a cookie with the given name from the request. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ICookieManager.AppendResponseCookie(Microsoft.Owin.IOwinContext,System.String,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Append a cookie to the response. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ICookieManager.DeleteCookie(Microsoft.Owin.IOwinContext,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Append a delete cookie to the response. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.CookieManager.GetRequestCookie(Microsoft.Owin.IOwinContext,System.String)"> |
| | | <summary> |
| | | Read a cookie with the given name from the request. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.CookieManager.AppendResponseCookie(Microsoft.Owin.IOwinContext,System.String,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Appends a new response cookie to the Set-Cookie header. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.CookieManager.DeleteCookie(Microsoft.Owin.IOwinContext,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Deletes the cookie with the given key by appending an expired cookie. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.ChunkingCookieManager"> |
| | | <summary> |
| | | This handles cookies that are limited by per cookie length. It breaks down long cookies for responses, and reassembles them |
| | | from requests. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ChunkingCookieManager.#ctor"> |
| | | <summary> |
| | | Creates a new instance of ChunkingCookieManager. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ChunkingCookieManager.GetRequestCookie(Microsoft.Owin.IOwinContext,System.String)"> |
| | | <summary> |
| | | Get the reassembled cookie. Non chunked cookies are returned normally. |
| | | Cookies with missing chunks just have their "chunks:XX" header returned. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <returns>The reassembled cookie, if any, or null.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ChunkingCookieManager.AppendResponseCookie(Microsoft.Owin.IOwinContext,System.String,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Appends a new response cookie to the Set-Cookie header. If the cookie is larger than the given size limit |
| | | then it will be broken down into multiple cookies as follows: |
| | | Set-Cookie: CookieName=chunks:3; path=/ |
| | | Set-Cookie: CookieNameC1=Segment1; path=/ |
| | | Set-Cookie: CookieNameC2=Segment2; path=/ |
| | | Set-Cookie: CookieNameC3=Segment3; path=/ |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.ChunkingCookieManager.DeleteCookie(Microsoft.Owin.IOwinContext,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Deletes the cookie with the given key by setting an expired state. If a matching chunked cookie exists on |
| | | the request, delete each chunk. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <param name="key"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Infrastructure.ChunkingCookieManager.ChunkSize"> |
| | | <summary> |
| | | The maximum size of cookie to send back to the client. If a cookie exceeds this size it will be broken down into multiple |
| | | cookies. Set this value to null to disable this behavior. The default is 4090 characters, which is supported by all |
| | | common browsers. |
| | | |
| | | Note that browsers may also have limits on the total size of all cookies per domain, and on the number of cookies per domain. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Infrastructure.ChunkingCookieManager.ThrowForPartialCookies"> |
| | | <summary> |
| | | Throw if not all chunks of a cookie are available on a request for re-assembly. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.IOwinContext"> |
| | | <summary> |
| | | This wraps OWIN environment dictionary and provides strongly typed accessors. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinContext.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a value from the OWIN environment, or returns default(T) if not present. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key or the default(T) if not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinContext.Set``1(System.String,``0)"> |
| | | <summary> |
| | | Sets the given key and value in the OWIN environment. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinContext.Request"> |
| | | <summary> |
| | | Gets a wrapper exposing request specific properties. |
| | | </summary> |
| | | <returns>A wrapper exposing request specific properties.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinContext.Response"> |
| | | <summary> |
| | | Gets a wrapper exposing response specific properties. |
| | | </summary> |
| | | <returns>A wrapper exposing response specific properties.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinContext.Authentication"> |
| | | <summary> |
| | | Gets the Authentication middleware functionality available on the current request. |
| | | </summary> |
| | | <returns>The authentication middleware functionality available on the current request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinContext.Environment"> |
| | | <summary> |
| | | Gets the OWIN environment. |
| | | </summary> |
| | | <returns>The OWIN environment.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinContext.TraceOutput"> |
| | | <summary> |
| | | Gets or sets the host.TraceOutput environment value. |
| | | </summary> |
| | | <returns>The host.TraceOutput TextWriter.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.IOwinRequest"> |
| | | <summary> |
| | | This wraps OWIN environment dictionary and provides strongly typed accessors. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinRequest.ReadFormAsync"> |
| | | <summary> |
| | | Asynchronously reads and parses the request body as a form. |
| | | </summary> |
| | | <returns>The parsed form data.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinRequest.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a value from the OWIN environment, or returns default(T) if not present. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key or the default(T) if not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinRequest.Set``1(System.String,``0)"> |
| | | <summary> |
| | | Sets the given key and value in the OWIN environment. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Environment"> |
| | | <summary> |
| | | Gets the OWIN environment. |
| | | </summary> |
| | | <returns>The OWIN environment.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Context"> |
| | | <summary> |
| | | Gets the request context. |
| | | </summary> |
| | | <returns>The request context.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Method"> |
| | | <summary> |
| | | Gets or set the HTTP method. |
| | | </summary> |
| | | <returns>The HTTP method.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Scheme"> |
| | | <summary> |
| | | Gets or set the HTTP request scheme from owin.RequestScheme. |
| | | </summary> |
| | | <returns>The HTTP request scheme from owin.RequestScheme.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.IsSecure"> |
| | | <summary> |
| | | Returns true if the owin.RequestScheme is https. |
| | | </summary> |
| | | <returns>true if this request is using https; otherwise, false.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Host"> |
| | | <summary> |
| | | Gets or set the Host header. May include the port. |
| | | </summary> |
| | | <return>The Host header.</return> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.PathBase"> |
| | | <summary> |
| | | Gets or set the owin.RequestPathBase. |
| | | </summary> |
| | | <returns>The owin.RequestPathBase.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Path"> |
| | | <summary> |
| | | Gets or set the request path from owin.RequestPath. |
| | | </summary> |
| | | <returns>The request path from owin.RequestPath.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.QueryString"> |
| | | <summary> |
| | | Gets or set the query string from owin.RequestQueryString. |
| | | </summary> |
| | | <returns>The query string from owin.RequestQueryString.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Query"> |
| | | <summary> |
| | | Gets the query value collection parsed from owin.RequestQueryString. |
| | | </summary> |
| | | <returns>The query value collection parsed from owin.RequestQueryString.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Uri"> |
| | | <summary> |
| | | Gets the uniform resource identifier (URI) associated with the request. |
| | | </summary> |
| | | <returns>The uniform resource identifier (URI) associated with the request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Protocol"> |
| | | <summary> |
| | | Gets or set the owin.RequestProtocol. |
| | | </summary> |
| | | <returns>The owin.RequestProtocol.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Headers"> |
| | | <summary> |
| | | Gets the request headers. |
| | | </summary> |
| | | <returns>The request headers.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Cookies"> |
| | | <summary> |
| | | Gets the collection of Cookies for this request. |
| | | </summary> |
| | | <returns>The collection of Cookies for this request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.ContentType"> |
| | | <summary> |
| | | Gets or sets the Content-Type header. |
| | | </summary> |
| | | <returns>The Content-Type header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.CacheControl"> |
| | | <summary> |
| | | Gets or sets the Cache-Control header. |
| | | </summary> |
| | | <returns>The Cache-Control header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.MediaType"> |
| | | <summary> |
| | | Gets or sets the Media-Type header. |
| | | </summary> |
| | | <returns>The Media-Type header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Accept"> |
| | | <summary> |
| | | Gets or set the Accept header. |
| | | </summary> |
| | | <returns>The Accept header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.Body"> |
| | | <summary> |
| | | Gets or set the owin.RequestBody Stream. |
| | | </summary> |
| | | <returns>The owin.RequestBody Stream.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.CallCancelled"> |
| | | <summary> |
| | | Gets or sets the cancellation token for the request. |
| | | </summary> |
| | | <returns>The cancellation token for the request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.LocalIpAddress"> |
| | | <summary> |
| | | Gets or set the server.LocalIpAddress. |
| | | </summary> |
| | | <returns>The server.LocalIpAddress.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.LocalPort"> |
| | | <summary> |
| | | Gets or set the server.LocalPort. |
| | | </summary> |
| | | <returns>The server.LocalPort.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.RemoteIpAddress"> |
| | | <summary> |
| | | Gets or set the server.RemoteIpAddress. |
| | | </summary> |
| | | <returns>The server.RemoteIpAddress.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.RemotePort"> |
| | | <summary> |
| | | Gets or set the server.RemotePort. |
| | | </summary> |
| | | <returns>The server.RemotePort.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinRequest.User"> |
| | | <summary> |
| | | Gets or set the server.User. |
| | | </summary> |
| | | <returns>The server.User.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.IOwinResponse"> |
| | | <summary> |
| | | This wraps OWIN environment dictionary and provides strongly typed accessors. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.OnSendingHeaders(System.Action{System.Object},System.Object)"> |
| | | <summary> |
| | | Registers for an event that fires when the response headers are sent. |
| | | </summary> |
| | | <param name="callback">The callback method.</param> |
| | | <param name="state">The callback state.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.Redirect(System.String)"> |
| | | <summary> |
| | | Sets a 302 response status code and the Location header. |
| | | </summary> |
| | | <param name="location">The location where to redirect the client.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.Write(System.String)"> |
| | | <summary> |
| | | Writes the given text to the response body stream using UTF-8. |
| | | </summary> |
| | | <param name="text">The response data.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.Write(System.Byte[])"> |
| | | <summary> |
| | | Writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.Write(System.Byte[],System.Int32,System.Int32)"> |
| | | <summary> |
| | | Writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <param name="offset">The zero-based byte offset in the <paramref name="data" /> parameter at which to begin copying bytes.</param> |
| | | <param name="count">The number of bytes to write.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.WriteAsync(System.String)"> |
| | | <summary> |
| | | Asynchronously writes the given text to the response body stream using UTF-8. |
| | | </summary> |
| | | <param name="text">The response data.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.WriteAsync(System.String,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Asynchronously writes the given text to the response body stream using UTF-8. |
| | | </summary> |
| | | <param name="text">The response data.</param> |
| | | <param name="token">A token used to indicate cancellation.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.WriteAsync(System.Byte[])"> |
| | | <summary> |
| | | Asynchronously writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.WriteAsync(System.Byte[],System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Asynchronously writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <param name="token">A token used to indicate cancellation.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Asynchronously writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <param name="offset">The zero-based byte offset in the <paramref name="data" /> parameter at which to begin copying bytes.</param> |
| | | <param name="count">The number of bytes to write.</param> |
| | | <param name="token">A token used to indicate cancellation.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a value from the OWIN environment, or returns default(T) if not present. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key or the default(T) if not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.IOwinResponse.Set``1(System.String,``0)"> |
| | | <summary> |
| | | Sets the given key and value in the OWIN environment. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Environment"> |
| | | <summary> |
| | | Gets the OWIN environment. |
| | | </summary> |
| | | <returns>The OWIN environment.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Context"> |
| | | <summary> |
| | | Gets the request context. |
| | | </summary> |
| | | <returns>The request context.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.StatusCode"> |
| | | <summary> |
| | | Gets or sets the optional owin.ResponseStatusCode. |
| | | </summary> |
| | | <returns>The optional owin.ResponseStatusCode, or 200 if not set.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.ReasonPhrase"> |
| | | <summary> |
| | | Gets or sets the the optional owin.ResponseReasonPhrase. |
| | | </summary> |
| | | <returns>The the optional owin.ResponseReasonPhrase.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Protocol"> |
| | | <summary> |
| | | Gets or sets the owin.ResponseProtocol. |
| | | </summary> |
| | | <returns>The owin.ResponseProtocol.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Headers"> |
| | | <summary> |
| | | Gets the response header collection. |
| | | </summary> |
| | | <returns>The response header collection.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Cookies"> |
| | | <summary> |
| | | Gets a collection used to manipulate the Set-Cookie header. |
| | | </summary> |
| | | <returns>A collection used to manipulate the Set-Cookie header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.ContentLength"> |
| | | <summary> |
| | | Gets or sets the Content-Length header. |
| | | </summary> |
| | | <returns>The Content-Length header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.ContentType"> |
| | | <summary> |
| | | Gets or sets the Content-Type header. |
| | | </summary> |
| | | <returns>The Content-Type header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Expires"> |
| | | <summary> |
| | | Gets or sets the Expires header. |
| | | </summary> |
| | | <returns>The Expires header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.ETag"> |
| | | <summary> |
| | | Gets or sets the E-Tag header. |
| | | </summary> |
| | | <returns>The E-Tag header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.IOwinResponse.Body"> |
| | | <summary> |
| | | Gets or sets the owin.ResponseBody Stream. |
| | | </summary> |
| | | <returns>The owin.ResponseBody Stream.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.OwinStartupAttribute"> |
| | | <summary> |
| | | Used to mark which class in an assembly should be used for automatic startup. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinStartupAttribute.#ctor(System.Type)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.OwinStartupAttribute"/> class |
| | | </summary> |
| | | <param name="startupType">The startup class</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinStartupAttribute.#ctor(System.String,System.Type)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.OwinStartupAttribute"/> class |
| | | </summary> |
| | | <param name="friendlyName">A non-default configuration, e.g. staging.</param> |
| | | <param name="startupType">The startup class</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinStartupAttribute.#ctor(System.Type,System.String)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.OwinStartupAttribute"/> class |
| | | </summary> |
| | | <param name="startupType">The startup class</param> |
| | | <param name="methodName">Specifies which method to call</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinStartupAttribute.#ctor(System.String,System.Type,System.String)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.OwinStartupAttribute"/> class |
| | | </summary> |
| | | <param name="friendlyName">A non-default configuration, e.g. staging.</param> |
| | | <param name="startupType">The startup class</param> |
| | | <param name="methodName">Specifies which method to call</param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinStartupAttribute.FriendlyName"> |
| | | <summary> |
| | | A non-default configuration if any. e.g. Staging. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinStartupAttribute.StartupType"> |
| | | <summary> |
| | | The startup class |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinStartupAttribute.MethodName"> |
| | | <summary> |
| | | The name of the configuration method |
| | | </summary> |
| | | </member> |
| | | <member name="T:Owin.PipelineStage"> |
| | | <summary> |
| | | An ordered list of known Asp.Net integrated pipeline stages. More details on the ASP.NET integrated pipeline can be found at http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.Authenticate"> |
| | | <summary> |
| | | Corresponds to the AuthenticateRequest stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.PostAuthenticate"> |
| | | <summary> |
| | | Corresponds to the PostAuthenticateRequest stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.Authorize"> |
| | | <summary> |
| | | Corresponds to the AuthorizeRequest stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.PostAuthorize"> |
| | | <summary> |
| | | Corresponds to the PostAuthorizeRequest stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.ResolveCache"> |
| | | <summary> |
| | | Corresponds to the ResolveRequestCache stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.PostResolveCache"> |
| | | <summary> |
| | | Corresponds to the PostResolveRequestCache stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.MapHandler"> |
| | | <summary> |
| | | Corresponds to the MapRequestHandler stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.PostMapHandler"> |
| | | <summary> |
| | | Corresponds to the PostMapRequestHandler stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.AcquireState"> |
| | | <summary> |
| | | Corresponds to the AcquireRequestState stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.PostAcquireState"> |
| | | <summary> |
| | | Corresponds to the PostAcquireRequestState stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Owin.PipelineStage.PreHandlerExecute"> |
| | | <summary> |
| | | Corresponds to the PreRequestHandlerExecute stage of the ASP.NET integrated pipeline. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Owin.MapExtensions"> |
| | | <summary> |
| | | Extension methods for the MapMiddleware |
| | | </summary> |
| | | </member> |
| | | <member name="M:Owin.MapExtensions.Map(Owin.IAppBuilder,System.String,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | If the request path starts with the given pathMatch, execute the app configured via configuration parameter instead of |
| | | continuing to the next component in the pipeline. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="pathMatch">The path to match</param> |
| | | <param name="configuration">The branch to take for positive path matches</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.MapExtensions.Map(Owin.IAppBuilder,Microsoft.Owin.PathString,System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | If the request path starts with the given pathMatch, execute the app configured via configuration parameter instead of |
| | | continuing to the next component in the pipeline. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="pathMatch">The path to match</param> |
| | | <param name="configuration">The branch to take for positive path matches</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Mapping.MapMiddleware"> |
| | | <summary> |
| | | Used to create path based branches in your application pipeline. |
| | | The owin.RequestPathBase is not included in the evaluation, only owin.RequestPath. |
| | | Matching paths have the matching piece removed from owin.RequestPath and added to the owin.RequestPathBase. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Mapping.MapMiddleware.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},Microsoft.Owin.Mapping.MapOptions)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Mapping.MapMiddleware"/> class |
| | | </summary> |
| | | <param name="next">The normal pipeline taken for a negative match</param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Mapping.MapMiddleware.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Process an individual request. |
| | | </summary> |
| | | <param name="environment"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Mapping.MapOptions"> |
| | | <summary> |
| | | Options for the Map middleware |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Mapping.MapOptions.PathMatch"> |
| | | <summary> |
| | | The path to match |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Mapping.MapOptions.Branch"> |
| | | <summary> |
| | | The branch taken for a positive match |
| | | </summary> |
| | | </member> |
| | | <member name="T:Owin.MapWhenExtensions"> |
| | | <summary> |
| | | Extension methods for the MapWhenMiddleware |
| | | </summary> |
| | | </member> |
| | | <member name="M:Owin.MapWhenExtensions.MapWhen(Owin.IAppBuilder,System.Func{Microsoft.Owin.IOwinContext,System.Boolean},System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Branches the request pipeline based on the result of the given predicate. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="predicate">Invoked with the request environment to determine if the branch should be taken</param> |
| | | <param name="configuration">Configures a branch to take</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.MapWhenExtensions.MapWhenAsync(Owin.IAppBuilder,System.Func{Microsoft.Owin.IOwinContext,System.Threading.Tasks.Task{System.Boolean}},System.Action{Owin.IAppBuilder})"> |
| | | <summary> |
| | | Branches the request pipeline based on the async result of the given predicate. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="predicate">Invoked asynchronously with the request environment to determine if the branch should be taken</param> |
| | | <param name="configuration">Configures a branch to take</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Mapping.MapWhenMiddleware"> |
| | | <summary> |
| | | Determines if the request should take a specific branch of the pipeline by passing the environment |
| | | to a user defined callback. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Mapping.MapWhenMiddleware.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},Microsoft.Owin.Mapping.MapWhenOptions)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Mapping.MapWhenMiddleware"/> class |
| | | </summary> |
| | | <param name="next">The normal application pipeline</param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Mapping.MapWhenMiddleware.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Process an individual request. |
| | | </summary> |
| | | <param name="environment"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Mapping.MapWhenOptions"> |
| | | <summary> |
| | | Options for the MapWhen middleware |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Mapping.MapWhenOptions.Predicate"> |
| | | <summary> |
| | | The user callback that determines if the branch should be taken |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Mapping.MapWhenOptions.PredicateAsync"> |
| | | <summary> |
| | | The async user callback that determines if the branch should be taken |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Mapping.MapWhenOptions.Branch"> |
| | | <summary> |
| | | The branch taken for a positive match |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.OwinContext"> |
| | | <summary> |
| | | This wraps OWIN environment dictionary and provides strongly typed accessors. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinContext.#ctor"> |
| | | <summary> |
| | | Create a new context with only request and response header collections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinContext.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Create a new wrapper. |
| | | </summary> |
| | | <param name="environment">OWIN environment dictionary which stores state information about the request, response and relevant server state.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinContext.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a value from the OWIN environment, or returns default(T) if not present. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key or the default(T) if not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinContext.Set``1(System.String,``0)"> |
| | | <summary> |
| | | Sets the given key and value in the OWIN environment. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinContext.Request"> |
| | | <summary> |
| | | Gets a wrapper exposing request specific properties. |
| | | </summary> |
| | | <returns>A wrapper exposing request specific properties.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinContext.Response"> |
| | | <summary> |
| | | Gets a wrapper exposing response specific properties. |
| | | </summary> |
| | | <returns>A wrapper exposing response specific properties.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinContext.Authentication"> |
| | | <summary> |
| | | Gets the Authentication middleware functionality available on the current request. |
| | | </summary> |
| | | <returns>The authentication middleware functionality available on the current request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinContext.Environment"> |
| | | <summary> |
| | | Gets the OWIN environment. |
| | | </summary> |
| | | <returns>The OWIN environment.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinContext.TraceOutput"> |
| | | <summary> |
| | | Gets or sets the host.TraceOutput environment value. |
| | | </summary> |
| | | <returns>The host.TraceOutput TextWriter.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.PathString"> |
| | | <summary> |
| | | Provides correct escaping for Path and PathBase values when needed to reconstruct a request or redirect URI string |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.PathString.Empty"> |
| | | <summary> |
| | | Represents the empty path. This field is read-only. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.#ctor(System.String)"> |
| | | <summary> |
| | | Initialize the path string with a given value. This value must be in un-escaped format. Use |
| | | PathString.FromUriComponent(value) if you have a path value which is in an escaped format. |
| | | </summary> |
| | | <param name="value">The unescaped path to be assigned to the Value property.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.ToString"> |
| | | <summary> |
| | | Provides the path string escaped in a way which is correct for combining into the URI representation. |
| | | </summary> |
| | | <returns>The escaped path value</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.ToUriComponent"> |
| | | <summary> |
| | | Provides the path string escaped in a way which is correct for combining into the URI representation. |
| | | </summary> |
| | | <returns>The escaped path value</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.FromUriComponent(System.String)"> |
| | | <summary> |
| | | Returns an PathString given the path as it is escaped in the URI format. The string MUST NOT contain any |
| | | value that is not a path. |
| | | </summary> |
| | | <param name="uriComponent">The escaped path as it appears in the URI format.</param> |
| | | <returns>The resulting PathString</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.FromUriComponent(System.Uri)"> |
| | | <summary> |
| | | Returns an PathString given the path as from a Uri object. Relative Uri objects are not supported. |
| | | </summary> |
| | | <param name="uri">The Uri object</param> |
| | | <returns>The resulting PathString</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.StartsWithSegments(Microsoft.Owin.PathString)"> |
| | | <summary> |
| | | Checks if this instance starts with or exactly matches the other instance. Only full segments are matched. |
| | | </summary> |
| | | <param name="other"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.StartsWithSegments(Microsoft.Owin.PathString,Microsoft.Owin.PathString@)"> |
| | | <summary> |
| | | Checks if this instance starts with or exactly matches the other instance. Only full segments are matched. |
| | | </summary> |
| | | <param name="other"></param> |
| | | <param name="remaining">Any remaining segments from this instance not included in the other instance.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.Add(Microsoft.Owin.PathString)"> |
| | | <summary> |
| | | Adds two PathString instances into a combined PathString value. |
| | | </summary> |
| | | <returns>The combined PathString value</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.Add(Microsoft.Owin.QueryString)"> |
| | | <summary> |
| | | Combines a PathString and QueryString into the joined URI formatted string value. |
| | | </summary> |
| | | <returns>The joined URI formatted string value</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.Equals(Microsoft.Owin.PathString)"> |
| | | <summary> |
| | | Compares this PathString value to another value. The default comparison is StringComparison.OrdinalIgnoreCase. |
| | | </summary> |
| | | <param name="other">The second PathString for comparison.</param> |
| | | <returns>True if both PathString values are equal</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.Equals(Microsoft.Owin.PathString,System.StringComparison)"> |
| | | <summary> |
| | | Compares this PathString value to another value using a specific StringComparison type |
| | | </summary> |
| | | <param name="other">The second PathString for comparison</param> |
| | | <param name="comparisonType">The StringComparison type to use</param> |
| | | <returns>True if both PathString values are equal</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.Equals(System.Object)"> |
| | | <summary> |
| | | Compares this PathString value to another value. The default comparison is StringComparison.OrdinalIgnoreCase. |
| | | </summary> |
| | | <param name="obj">The second PathString for comparison.</param> |
| | | <returns>True if both PathString values are equal</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.GetHashCode"> |
| | | <summary> |
| | | Returns the hash code for the PathString value. The hash code is provided by the OrdinalIgnoreCase implementation. |
| | | </summary> |
| | | <returns>The hash code</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.op_Equality(Microsoft.Owin.PathString,Microsoft.Owin.PathString)"> |
| | | <summary> |
| | | Operator call through to Equals |
| | | </summary> |
| | | <param name="left">The left parameter</param> |
| | | <param name="right">The right parameter</param> |
| | | <returns>True if both PathString values are equal</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.op_Inequality(Microsoft.Owin.PathString,Microsoft.Owin.PathString)"> |
| | | <summary> |
| | | Operator call through to Equals |
| | | </summary> |
| | | <param name="left">The left parameter</param> |
| | | <param name="right">The right parameter</param> |
| | | <returns>True if both PathString values are not equal</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.op_Addition(Microsoft.Owin.PathString,Microsoft.Owin.PathString)"> |
| | | <summary> |
| | | Operator call through to Add |
| | | </summary> |
| | | <param name="left">The left parameter</param> |
| | | <param name="right">The right parameter</param> |
| | | <returns>The PathString combination of both values</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.PathString.op_Addition(Microsoft.Owin.PathString,Microsoft.Owin.QueryString)"> |
| | | <summary> |
| | | Operator call through to Add |
| | | </summary> |
| | | <param name="left">The left parameter</param> |
| | | <param name="right">The right parameter</param> |
| | | <returns>The PathString combination of both values</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.PathString.Value"> |
| | | <summary> |
| | | The unescaped path value |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.PathString.HasValue"> |
| | | <summary> |
| | | True if the path is not empty |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.QueryString"> |
| | | <summary> |
| | | Provides correct handling for QueryString value when needed to reconstruct a request or redirect URI string |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.Owin.QueryString.Empty"> |
| | | <summary> |
| | | Represents the empty query string. This field is read-only. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.#ctor(System.String)"> |
| | | <summary> |
| | | Initialize the query string with a given value. This value must be in escaped and delimited format without |
| | | a leading '?' character. |
| | | </summary> |
| | | <param name="value">The query string to be assigned to the Value property.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.#ctor(System.String,System.String)"> |
| | | <summary> |
| | | Initialize a query string with a single given parameter name and value. The value is |
| | | </summary> |
| | | <param name="name">The unencoded parameter name</param> |
| | | <param name="value">The unencoded parameter value</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.ToString"> |
| | | <summary> |
| | | Provides the query string escaped in a way which is correct for combining into the URI representation. |
| | | A leading '?' character will be prepended unless the Value is null or empty. Characters which are potentially |
| | | dangerous are escaped. |
| | | </summary> |
| | | <returns>The query string value</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.ToUriComponent"> |
| | | <summary> |
| | | Provides the query string escaped in a way which is correct for combining into the URI representation. |
| | | A leading '?' character will be prepended unless the Value is null or empty. Characters which are potentially |
| | | dangerous are escaped. |
| | | </summary> |
| | | <returns>The query string value</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.FromUriComponent(System.String)"> |
| | | <summary> |
| | | Returns an QueryString given the query as it is escaped in the URI format. The string MUST NOT contain any |
| | | value that is not a query. |
| | | </summary> |
| | | <param name="uriComponent">The escaped query as it appears in the URI format.</param> |
| | | <returns>The resulting QueryString</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.FromUriComponent(System.Uri)"> |
| | | <summary> |
| | | Returns an QueryString given the query as from a Uri object. Relative Uri objects are not supported. |
| | | </summary> |
| | | <param name="uri">The Uri object</param> |
| | | <returns>The resulting QueryString</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.Equals(Microsoft.Owin.QueryString)"> |
| | | <summary> |
| | | Indicates whether the current instance is equal to the other instance. |
| | | </summary> |
| | | <param name="other"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.Equals(System.Object)"> |
| | | <summary> |
| | | Indicates whether the current instance is equal to the other instance. |
| | | </summary> |
| | | <param name="obj"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.GetHashCode"> |
| | | <summary> |
| | | Returns the hash code for this instance. |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.op_Equality(Microsoft.Owin.QueryString,Microsoft.Owin.QueryString)"> |
| | | <summary> |
| | | Compares the two instances for equality. |
| | | </summary> |
| | | <param name="left"></param> |
| | | <param name="right"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.QueryString.op_Inequality(Microsoft.Owin.QueryString,Microsoft.Owin.QueryString)"> |
| | | <summary> |
| | | Compares the two instances for inequality. |
| | | </summary> |
| | | <param name="left"></param> |
| | | <param name="right"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.QueryString.Value"> |
| | | <summary> |
| | | The escaped query string without the leading '?' character |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.QueryString.HasValue"> |
| | | <summary> |
| | | True if the query string is not empty |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.RequestCookieCollection"> |
| | | <summary> |
| | | A wrapper for the request Cookie header |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.RequestCookieCollection.#ctor(System.Collections.Generic.IDictionary{System.String,System.String})"> |
| | | <summary> |
| | | Create a new wrapper |
| | | </summary> |
| | | <param name="store"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.RequestCookieCollection.GetEnumerator"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.RequestCookieCollection.System#Collections#IEnumerable#GetEnumerator"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.RequestCookieCollection.Item(System.String)"> |
| | | <summary> |
| | | Returns null rather than throwing KeyNotFoundException |
| | | </summary> |
| | | <param name="key"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Resources"> |
| | | <summary> |
| | | A strongly-typed resource class, for looking up localized strings, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.ResourceManager"> |
| | | <summary> |
| | | Returns the cached ResourceManager instance used by this class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Culture"> |
| | | <summary> |
| | | Overrides the current thread's CurrentUICulture property for all |
| | | resource lookups using this strongly typed resource class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_ConversionTakesOneParameter"> |
| | | <summary> |
| | | Looks up a localized string similar to Conversion delegate must take one parameter.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_CookieLimitTooSmall"> |
| | | <summary> |
| | | Looks up a localized string similar to The cookie key and options are larger than ChunksSize, leaving no room for data.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_ImcompleteChunkedCookie"> |
| | | <summary> |
| | | Looks up a localized string similar to The chunked cookie is incomplete. Only {0} of the expected {1} chunks were found, totaling {2} characters. A client size limit may have been exceeded.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_MiddlewareNotSupported"> |
| | | <summary> |
| | | Looks up a localized string similar to The type '{0}' does not match any known middleware pattern.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_MissingOnSendingHeaders"> |
| | | <summary> |
| | | Looks up a localized string similar to The OWIN key 'server.OnSendingHeaders' is not available for this request.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_NoConstructorFound"> |
| | | <summary> |
| | | Looks up a localized string similar to The class '{0}' does not have a constructor taking {1} arguments.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_NoConversionExists"> |
| | | <summary> |
| | | Looks up a localized string similar to No conversion available between {0} and {1}.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_PathMustNotEndWithSlash"> |
| | | <summary> |
| | | Looks up a localized string similar to The path must not end with a '/'. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_PathMustStartWithSlash"> |
| | | <summary> |
| | | Looks up a localized string similar to The path must start with a '/' followed by one or more characters.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_PathRequired"> |
| | | <summary> |
| | | Looks up a localized string similar to The path is required. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Resources.Exception_QueryStringMustStartWithDelimiter"> |
| | | <summary> |
| | | Looks up a localized string similar to The query string must start with a '?' unless null or empty.. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Builder.AppBuilder"> |
| | | <summary> |
| | | A standard implementation of IAppBuilder |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilder.#ctor"> |
| | | <summary> |
| | | Initializes a new instance of the the type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilder.#ctor(System.Collections.Generic.IDictionary{System.Tuple{System.Type,System.Type},System.Delegate},System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="conversions"></param> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilder.Use(System.Object,System.Object[])"> |
| | | <summary> |
| | | Adds a middleware node to the OWIN function pipeline. The middleware are |
| | | invoked in the order they are added: the first middleware passed to Use will |
| | | be the outermost function, and the last middleware passed to Use will be the |
| | | innermost. |
| | | </summary> |
| | | <param name="middleware"> |
| | | The middleware parameter determines which behavior is being chained into the |
| | | pipeline. |
| | | |
| | | If the middleware given to Use is a Delegate, then it will be invoked with the "next app" in |
| | | the chain as the first parameter. If the delegate takes more than the single argument, |
| | | then the additional values must be provided to Use in the args array. |
| | | |
| | | If the middleware given to Use is a Type, then the public constructor will be |
| | | invoked with the "next app" in the chain as the first parameter. The resulting object |
| | | must have a public Invoke method. If the object has constructors which take more than |
| | | the single "next app" argument, then additional values may be provided in the args array. |
| | | </param> |
| | | <param name="args"> |
| | | Any additional args passed to Use will be passed as additional values, following the "next app" |
| | | parameter, when the OWIN call pipeline is build. |
| | | |
| | | They are passed as additional parameters if the middleware parameter is a Delegate, or as additional |
| | | constructor arguments if the middle parameter is a Type. |
| | | </param> |
| | | <returns> |
| | | The IAppBuilder itself is returned. This enables you to chain your use statements together. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilder.New"> |
| | | <summary> |
| | | The New method creates a new instance of an IAppBuilder. This is needed to create |
| | | a tree structure in your processing, rather than a linear pipeline. The new instance share the |
| | | same Properties, but will be created with a new, empty middleware list. |
| | | |
| | | To create a tangent pipeline you would first call New, followed by several calls to Use on |
| | | the new builder, ending with a call to Build on the new builder. The return value from Build |
| | | will be the entry-point to your tangent pipeline. This entry-point may now be added to the |
| | | main pipeline as an argument to a switching middleware, which will either call the tangent |
| | | pipeline or the "next app", based on something in the request. |
| | | |
| | | That said - all of that work is typically hidden by a middleware like Map, which will do that |
| | | for you. |
| | | </summary> |
| | | <returns>The new instance of the IAppBuilder implementation</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilder.Build(System.Type)"> |
| | | <summary> |
| | | The Build is called at the point when all of the middleware should be chained |
| | | together. This is typically done by the hosting component which created the app builder, |
| | | and does not need to be called by the startup method if the IAppBuilder is passed in. |
| | | </summary> |
| | | <param name="returnType"> |
| | | The Type argument indicates which calling convention should be returned, and |
| | | is typically typeof(<typeref name="Func<IDictionary<string,object>, Task>"/>) for the OWIN |
| | | calling convention. |
| | | </param> |
| | | <returns> |
| | | Returns an instance of the pipeline's entry point. This object may be safely cast to the |
| | | type which was provided |
| | | </returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Builder.AppBuilder.Properties"> |
| | | <summary> |
| | | Contains arbitrary properties which may added, examined, and modified by |
| | | components during the startup sequence. |
| | | </summary> |
| | | <returns>Returns <see cref="T:System.Collections.Generic.IDictionary`2" />.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Builder.NotFound"> |
| | | <summary> |
| | | Simple object used by AppBuilder as seed OWIN callable if the |
| | | builder.Properties["builder.DefaultApp"] is not set |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.ISystemClock"> |
| | | <summary> |
| | | Abstracts the system clock to facilitate testing. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Infrastructure.ISystemClock.UtcNow"> |
| | | <summary> |
| | | Retrieves the current system time in UTC. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.SystemClock"> |
| | | <summary> |
| | | Provides access to the normal system clock. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Infrastructure.SystemClock.UtcNow"> |
| | | <summary> |
| | | Retrieves the current system time in UTC. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.WebUtilities"> |
| | | <summary> |
| | | Response generation utilities. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.WebUtilities.AddQueryString(System.String,System.String)"> |
| | | <summary> |
| | | Append the given query to the uri. |
| | | </summary> |
| | | <param name="uri">The base uri.</param> |
| | | <param name="queryString">The query string to append, if any.</param> |
| | | <returns>The combine result.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.WebUtilities.AddQueryString(System.String,System.String,System.String)"> |
| | | <summary> |
| | | Append the given query key and value to the uri. |
| | | </summary> |
| | | <param name="uri">The base uri.</param> |
| | | <param name="name">The name of the query key.</param> |
| | | <param name="value">The query value.</param> |
| | | <returns>The combine result.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.WebUtilities.AddQueryString(System.String,System.Collections.Generic.IDictionary{System.String,System.String})"> |
| | | <summary> |
| | | Append the given query keys and values to the uri. |
| | | </summary> |
| | | <param name="uri">The base uri.</param> |
| | | <param name="queryString">A collection of name value query pairs to append.</param> |
| | | <returns>The combine result.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.ResponseCookieCollection"> |
| | | <summary> |
| | | A wrapper for the response Set-Cookie header |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ResponseCookieCollection.#ctor(Microsoft.Owin.IHeaderDictionary)"> |
| | | <summary> |
| | | Create a new wrapper |
| | | </summary> |
| | | <param name="headers"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ResponseCookieCollection.Append(System.String,System.String)"> |
| | | <summary> |
| | | Add a new cookie and value |
| | | </summary> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ResponseCookieCollection.Append(System.String,System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Add a new cookie |
| | | </summary> |
| | | <param name="key"></param> |
| | | <param name="value"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ResponseCookieCollection.Delete(System.String)"> |
| | | <summary> |
| | | Sets an expired cookie |
| | | </summary> |
| | | <param name="key"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.ResponseCookieCollection.Delete(System.String,Microsoft.Owin.CookieOptions)"> |
| | | <summary> |
| | | Sets an expired cookie |
| | | </summary> |
| | | <param name="key"></param> |
| | | <param name="options"></param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticateResult"> |
| | | <summary> |
| | | Acts as the return value from calls to the IAuthenticationManager's AuthenticeAsync methods. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticateResult.#ctor(System.Security.Principal.IIdentity,Microsoft.Owin.Security.AuthenticationProperties,Microsoft.Owin.Security.AuthenticationDescription)"> |
| | | <summary> |
| | | Create an instance of the result object |
| | | </summary> |
| | | <param name="identity">Assigned to Identity. May be null.</param> |
| | | <param name="properties">Assigned to Properties. Contains extra information carried along with the identity.</param> |
| | | <param name="description">Assigned to Description. Contains information describing the authentication provider.</param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticateResult.Identity"> |
| | | <summary> |
| | | Contains the claims that were authenticated by the given AuthenticationType. If the authentication |
| | | type was not successful the Identity property will be null. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticateResult.Properties"> |
| | | <summary> |
| | | Contains extra values that were provided with the original SignIn call. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticateResult.Description"> |
| | | <summary> |
| | | Contains description properties for the middleware authentication type in general. Does not |
| | | vary per request. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationDescription"> |
| | | <summary> |
| | | Contains information describing an authentication provider. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationDescription.#ctor"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationDescription"/> class |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationDescription.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationDescription"/> class |
| | | </summary> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationDescription.Properties"> |
| | | <summary> |
| | | Contains metadata about the authentication provider. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationDescription.AuthenticationType"> |
| | | <summary> |
| | | Gets or sets the name used to reference the authentication middleware instance. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationDescription.Caption"> |
| | | <summary> |
| | | Gets or sets the display name for the authentication provider. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Extensions.IntegratedPipelineExtensions"> |
| | | <summary> |
| | | Extension methods used to indicate at which stage in the integrated pipeline prior middleware should run. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Extensions.IntegratedPipelineExtensions.UseStageMarker(Owin.IAppBuilder,System.String)"> |
| | | <summary> |
| | | Call after other middleware to specify when they should run in the integrated pipeline. |
| | | </summary> |
| | | <param name="app">The IAppBuilder.</param> |
| | | <param name="stageName">The name of the integrated pipeline in which to run.</param> |
| | | <returns>The original IAppBuilder for chaining.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Extensions.IntegratedPipelineExtensions.UseStageMarker(Owin.IAppBuilder,Owin.PipelineStage)"> |
| | | <summary> |
| | | Call after other middleware to specify when they should run in the integrated pipeline. |
| | | </summary> |
| | | <param name="app">The IAppBuilder.</param> |
| | | <param name="stage">The stage of the integrated pipeline in which to run.</param> |
| | | <returns>The original IAppBuilder for chaining.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Logging.AppBuilderLoggerExtensions"> |
| | | <summary> |
| | | Logging extension methods for IAppBuilder. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.AppBuilderLoggerExtensions.SetLoggerFactory(Owin.IAppBuilder,Microsoft.Owin.Logging.ILoggerFactory)"> |
| | | <summary> |
| | | Sets the server.LoggerFactory in the Properties collection. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="loggerFactory"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.AppBuilderLoggerExtensions.GetLoggerFactory(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Retrieves the server.LoggerFactory from the Properties collection. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.AppBuilderLoggerExtensions.CreateLogger(Owin.IAppBuilder,System.String)"> |
| | | <summary> |
| | | Creates a new ILogger instance from the server.LoggerFactory in the Properties collection. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.AppBuilderLoggerExtensions.CreateLogger(Owin.IAppBuilder,System.Type)"> |
| | | <summary> |
| | | Creates a new ILogger instance from the server.LoggerFactory in the Properties collection. |
| | | </summary> |
| | | <param name="app"></param> |
| | | <param name="component"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.AppBuilderLoggerExtensions.CreateLogger``1(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Creates a new ILogger instance from the server.LoggerFactory in the Properties collection. |
| | | </summary> |
| | | <typeparam name="TType"></typeparam> |
| | | <param name="app"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Logging.ILoggerFactory"> |
| | | <summary> |
| | | Used to create logger instances of the given name. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.ILoggerFactory.Create(System.String)"> |
| | | <summary> |
| | | Creates a new ILogger instance of the given name. |
| | | </summary> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Logging.ILogger"> |
| | | <summary> |
| | | A generic interface for logging. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.ILogger.WriteCore(System.Diagnostics.TraceEventType,System.Int32,System.Object,System.Exception,System.Func{System.Object,System.Exception,System.String})"> |
| | | <summary> |
| | | Aggregates most logging patterns to a single method. This must be compatible with the Func representation in the OWIN environment. |
| | | |
| | | To check IsEnabled call WriteCore with only TraceEventType and check the return value, no event will be written. |
| | | </summary> |
| | | <param name="eventType"></param> |
| | | <param name="eventId"></param> |
| | | <param name="state"></param> |
| | | <param name="exception"></param> |
| | | <param name="formatter"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.BuilderProperties.Address"> |
| | | <summary> |
| | | Contains the parts of an address. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Initializes a new instance. |
| | | </summary> |
| | | <param name="dictionary"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.#ctor(System.String,System.String,System.String,System.String)"> |
| | | <summary> |
| | | Initializes a new <see cref="T:Microsoft.Owin.BuilderProperties.Address"/> with the given parts. |
| | | </summary> |
| | | <param name="scheme">The scheme.</param> |
| | | <param name="host">The host.</param> |
| | | <param name="port">The port.</param> |
| | | <param name="path">The path.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.Create"> |
| | | <summary> |
| | | Creates a new <see cref="T:Microsoft.Owin.BuilderProperties.Address"/> |
| | | </summary> |
| | | <returns>A new <see cref="T:Microsoft.Owin.BuilderProperties.Address" /></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.Equals(Microsoft.Owin.BuilderProperties.Address)"> |
| | | <summary> |
| | | Determines whether the specified object is equal to the current object. |
| | | </summary> |
| | | <param name="other">The other object.</param> |
| | | <returns>true if the specified object is equal to the current object; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.Equals(System.Object)"> |
| | | <summary> |
| | | Determines whether the specified object is equal to the current object. |
| | | </summary> |
| | | <param name="obj">The other object.</param> |
| | | <returns>true if the specified object is equal to the current object; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.GetHashCode"> |
| | | <summary> |
| | | Returns the hash code for this instance. |
| | | </summary> |
| | | <returns>The hash code for this instance.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.op_Equality(Microsoft.Owin.BuilderProperties.Address,Microsoft.Owin.BuilderProperties.Address)"> |
| | | <summary> |
| | | Determines whether two specified instances of <see cref="T:Microsoft.Owin.BuilderProperties.Address" /> are equal. |
| | | </summary> |
| | | <param name="left">The first object to compare.</param> |
| | | <param name="right">The second object to compare.</param> |
| | | <returns>true if left and right represent the same address; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.op_Inequality(Microsoft.Owin.BuilderProperties.Address,Microsoft.Owin.BuilderProperties.Address)"> |
| | | <summary> |
| | | Determines whether two specified instances of <see cref="T:Microsoft.Owin.BuilderProperties.Address" /> are not equal. |
| | | </summary> |
| | | <param name="left">The first object to compare.</param> |
| | | <param name="right">The second object to compare.</param> |
| | | <returns>true if left and right do not represent the same address; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a specified key and value from the underlying dictionary. |
| | | </summary> |
| | | <typeparam name="T"></typeparam> |
| | | <param name="key">The key.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Address.Set(System.String,System.Object)"> |
| | | <summary> |
| | | Sets a specified key and value in the underlying dictionary. |
| | | </summary> |
| | | <param name="key">The key.</param> |
| | | <param name="value">The value.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Address.Dictionary"> |
| | | <summary> |
| | | Gets the internal dictionary for this collection. |
| | | </summary> |
| | | <returns>The internal dictionary for this collection.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Address.Scheme"> |
| | | <summary> |
| | | The uri scheme. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Address.Host"> |
| | | <summary> |
| | | The uri host. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Address.Port"> |
| | | <summary> |
| | | The uri port. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Address.Path"> |
| | | <summary> |
| | | The uri path. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.BuilderProperties.AddressCollection"> |
| | | <summary> |
| | | Wraps the host.Addresses list. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.#ctor(System.Collections.Generic.IList{System.Collections.Generic.IDictionary{System.String,System.Object}})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.BuilderProperties.AddressCollection" /> class. |
| | | </summary> |
| | | <param name="list">The address list to set to the collection.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.Add(Microsoft.Owin.BuilderProperties.Address)"> |
| | | <summary> |
| | | Adds the specified address to the collection. |
| | | </summary> |
| | | <param name="address">The address to add to the collection.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.System#Collections#IEnumerable#GetEnumerator"> |
| | | <summary> |
| | | Gets the enumerator that iterates through the collection. |
| | | </summary> |
| | | <returns>The enumerator that can be used to iterate through the collection.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.GetEnumerator"> |
| | | <summary> |
| | | Gets the enumerator that iterates through the collection. |
| | | </summary> |
| | | <returns>The enumerator that can be used to iterate through the collection.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.Create"> |
| | | <summary> |
| | | Creates a new empty instance of <see cref="T:Microsoft.Owin.BuilderProperties.AddressCollection" />. |
| | | </summary> |
| | | <returns>A new empty instance of <see cref="T:Microsoft.Owin.BuilderProperties.AddressCollection" />.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.Equals(Microsoft.Owin.BuilderProperties.AddressCollection)"> |
| | | <summary> |
| | | Determines whether the current collection is equal to the specified collection. |
| | | </summary> |
| | | <param name="other">The other collection to compare to the current collection.</param> |
| | | <returns>true if current collection is equal to the specified collection; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.Equals(System.Object)"> |
| | | <summary> |
| | | Determines whether the current collection is equal to the specified object. |
| | | </summary> |
| | | <param name="obj">The object to compare to the current collection.</param> |
| | | <returns>true if current collection is equal to the specified object; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.GetHashCode"> |
| | | <summary> |
| | | Gets the hash code for this instance. |
| | | </summary> |
| | | <returns>The hash code for this instance.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.op_Equality(Microsoft.Owin.BuilderProperties.AddressCollection,Microsoft.Owin.BuilderProperties.AddressCollection)"> |
| | | <summary> |
| | | Determines whether the first collection is equal to the second collection. |
| | | </summary> |
| | | <param name="left">The first collection to compare.</param> |
| | | <param name="right">The second collection to compare.</param> |
| | | <returns>true if both collections are equal; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AddressCollection.op_Inequality(Microsoft.Owin.BuilderProperties.AddressCollection,Microsoft.Owin.BuilderProperties.AddressCollection)"> |
| | | <summary> |
| | | Determines whether the first collection is not equal to the second collection. |
| | | </summary> |
| | | <param name="left">The first collection to compare.</param> |
| | | <param name="right">The second collection to compare.</param> |
| | | <returns>true if both collections are not equal; otherwise, false.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AddressCollection.List"> |
| | | <summary> |
| | | Gets the underlying address list. |
| | | </summary> |
| | | <returns>The underlying address list.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AddressCollection.Count"> |
| | | <summary> |
| | | Gets the number of elements in the collection. |
| | | </summary> |
| | | <returns>The number of elements in the collection.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AddressCollection.Item(System.Int32)"> |
| | | <summary> |
| | | Gets the item with the specified index from the collection. |
| | | </summary> |
| | | <param name="index">The index.</param> |
| | | <returns>The item with the specified index.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.BuilderProperties.AppProperties"> |
| | | <summary> |
| | | A wrapper for the <see cref="P:Microsoft.Owin.Builder.AppBuilder.Properties" /> IDictionary. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.BuilderProperties.AppProperties" /> class. |
| | | </summary> |
| | | <param name="dictionary"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.Equals(Microsoft.Owin.BuilderProperties.AppProperties)"> |
| | | <summary> |
| | | Determines whether the current AppProperties is equal to the specified AppProperties. |
| | | </summary> |
| | | <param name="other">The other AppProperties to compare with the current instance.</param> |
| | | <returns>true if the current AppProperties is equal to the specified AppProperties; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.Equals(System.Object)"> |
| | | <summary> |
| | | Determines whether the current AppProperties is equal to the specified object. |
| | | </summary> |
| | | <param name="obj">The object to compare with the current instance.</param> |
| | | <returns>true if the current AppProperties is equal to the specified object; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.GetHashCode"> |
| | | <summary> |
| | | Returns the hash code for this instance. |
| | | </summary> |
| | | <returns>The hash code for this instance.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.op_Equality(Microsoft.Owin.BuilderProperties.AppProperties,Microsoft.Owin.BuilderProperties.AppProperties)"> |
| | | <summary> |
| | | Determines whether the first AppPProperties is equal to the second AppProperties. |
| | | </summary> |
| | | <param name="left">The first AppPropeties to compare.</param> |
| | | <param name="right">The second AppPropeties to compare.</param> |
| | | <returns>true if both AppProperties are equal; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.op_Inequality(Microsoft.Owin.BuilderProperties.AppProperties,Microsoft.Owin.BuilderProperties.AppProperties)"> |
| | | <summary> |
| | | Determines whether the first AppPProperties is not equal to the second AppProperties. |
| | | </summary> |
| | | <param name="left">The first AppPropeties to compare.</param> |
| | | <param name="right">The second AppPropeties to compare.</param> |
| | | <returns>true if both AppProperties are not equal; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.Get``1(System.String)"> |
| | | <summary> |
| | | Gets the value from the dictionary with the specified key. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.AppProperties.Set(System.String,System.Object)"> |
| | | <summary> |
| | | Sets the value with the specified key. |
| | | </summary> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.OwinVersion"> |
| | | <summary> |
| | | Gets or sets the string value for âowin.Versionâ. |
| | | </summary> |
| | | <returns>The string value for âowin.Versionâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.DefaultApp"> |
| | | <summary> |
| | | Gets or sets the function delegate for âbuilder.DefaultAppâ. |
| | | </summary> |
| | | <returns>The function delegate for âbuilder.DefaultAppâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.AddSignatureConversionDelegate"> |
| | | <summary> |
| | | Gets or sets the action delegate for âbuilder.AddSignatureConversionâ. |
| | | </summary> |
| | | <returns>The action delegate for âbuilder.AddSignatureConversionâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.AppName"> |
| | | <summary> |
| | | Gets or sets the string value for âhost.AppNameâ. |
| | | </summary> |
| | | <returns>The string value for âhost.AppNameâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.TraceOutput"> |
| | | <summary> |
| | | Gets or sets the text writer for âhost.TraceOutputâ. |
| | | </summary> |
| | | <returns>The text writer for âhost.TraceOutputâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.OnAppDisposing"> |
| | | <summary> |
| | | Gets or sets the cancellation token for âhost.OnAppDisposingâ. |
| | | </summary> |
| | | <returns>The cancellation token for âhost.OnAppDisposingâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.Addresses"> |
| | | <summary> |
| | | Gets or sets the address collection for âhost.Addressesâ. |
| | | </summary> |
| | | <returns>The address collection for âhost.Addressesâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.Capabilities"> |
| | | <summary> |
| | | Gets or sets the list of âserver.Capabilitiesâ. |
| | | </summary> |
| | | <returns>The list of âserver.Capabilitiesâ.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.AppProperties.Dictionary"> |
| | | <summary> |
| | | Gets the underlying dictionary for this <see cref="T:Microsoft.Owin.BuilderProperties.AppProperties" /> instance. |
| | | </summary> |
| | | <returns>The underlying dictionary for this <see cref="T:Microsoft.Owin.BuilderProperties.AppProperties" /> instance.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.BuilderProperties.Capabilities"> |
| | | <summary> |
| | | Represents the capabilities for the builder properties. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> class. |
| | | </summary> |
| | | <param name="dictionary"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.Create"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> class. |
| | | </summary> |
| | | <returns>A new instance of the <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> class.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.Equals(Microsoft.Owin.BuilderProperties.Capabilities)"> |
| | | <summary> |
| | | Determines whether the current Capabilities instance is equal to the specified Capabilities. |
| | | </summary> |
| | | <param name="other">The other Capabilities to compare with the current instance.</param> |
| | | <returns>true if the specified object is equal to the current object; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.Equals(System.Object)"> |
| | | <summary> |
| | | Determines whether the current Capabilities is equal to the specified object. |
| | | </summary> |
| | | <param name="obj">The object to compare with the current instance.</param> |
| | | <returns>true if the current Capabilities is equal to the specified object; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.GetHashCode"> |
| | | <summary> |
| | | Returns the hash code for this instance. |
| | | </summary> |
| | | <returns>The hash code for this instance.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.op_Equality(Microsoft.Owin.BuilderProperties.Capabilities,Microsoft.Owin.BuilderProperties.Capabilities)"> |
| | | <summary> |
| | | Determines whether two specified instances of <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> are equal. |
| | | </summary> |
| | | <param name="left">The first object to compare.</param> |
| | | <param name="right">The second object to compare.</param> |
| | | <returns>true if the two specified instances of <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> are equal; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.op_Inequality(Microsoft.Owin.BuilderProperties.Capabilities,Microsoft.Owin.BuilderProperties.Capabilities)"> |
| | | <summary> |
| | | Determines whether two specified instances of <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> are not equal. |
| | | </summary> |
| | | <param name="left">The first object to compare.</param> |
| | | <param name="right">The second object to compare.</param> |
| | | <returns>true if the two specified instances of <see cref="T:Microsoft.Owin.BuilderProperties.Capabilities" /> are not equal; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.Get``1(System.String)"> |
| | | <summary> |
| | | Gets the value from the dictionary with the specified key. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.BuilderProperties.Capabilities.Set(System.String,System.Object)"> |
| | | <summary> |
| | | Sets the given key and value in the underlying dictionary. |
| | | </summary> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Capabilities.Dictionary"> |
| | | <summary> |
| | | The underling IDictionary |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Capabilities.SendFileVersion"> |
| | | <summary> |
| | | Gets or sets the string value for "sendfile.Version" |
| | | </summary> |
| | | <returns>the string value for "sendfile.Version"</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.BuilderProperties.Capabilities.WebSocketVersion"> |
| | | <summary> |
| | | Gets or sets the websocket version. |
| | | </summary> |
| | | <returns>The websocket version.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.CookieOptions"> |
| | | <summary> |
| | | Options used to create a new cookie. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.CookieOptions.#ctor"> |
| | | <summary> |
| | | Creates a default cookie with a path of '/'. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.CookieOptions.Domain"> |
| | | <summary> |
| | | Gets or sets the domain to associate the cookie with. |
| | | </summary> |
| | | <returns>The domain to associate the cookie with.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.CookieOptions.Path"> |
| | | <summary> |
| | | Gets or sets the cookie path. |
| | | </summary> |
| | | <returns>The cookie path.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.CookieOptions.Expires"> |
| | | <summary> |
| | | Gets or sets the expiration date and time for the cookie. |
| | | </summary> |
| | | <returns>The expiration date and time for the cookie.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.CookieOptions.Secure"> |
| | | <summary> |
| | | Gets or sets a value that indicates whether to transmit the cookie using Secure Sockets Layer (SSL)âthat is, over HTTPS only. |
| | | </summary> |
| | | <returns>true to transmit the cookie only over an SSL connection (HTTPS); otherwise, false.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.CookieOptions.HttpOnly"> |
| | | <summary> |
| | | Gets or sets a value that indicates whether a cookie is accessible by client-side script. |
| | | </summary> |
| | | <returns>true if a cookie is accessible by client-side script; otherwise, false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Logging.LoggerFactory"> |
| | | <summary> |
| | | Provides a default ILoggerFactory. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Logging.LoggerFactory.Default"> |
| | | <summary> |
| | | Provides a default ILoggerFactory based on System.Diagnostics.TraceSorce. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Builder.AppBuilderExtensions"> |
| | | <summary> |
| | | Extension methods for IAppBuilder. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilderExtensions.Build(Owin.IAppBuilder)"> |
| | | <summary> |
| | | The Build is called at the point when all of the middleware should be chained |
| | | together. May be called to build pipeline branches. |
| | | </summary> |
| | | <param name="builder"></param> |
| | | <returns>The request processing entry point for this section of the pipeline.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilderExtensions.Build``1(Owin.IAppBuilder)"> |
| | | <summary> |
| | | The Build is called at the point when all of the middleware should be chained |
| | | together. May be called to build pipeline branches. |
| | | </summary> |
| | | <typeparam name="TApp">The application signature.</typeparam> |
| | | <param name="builder"></param> |
| | | <returns>The request processing entry point for this section of the pipeline.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilderExtensions.AddSignatureConversion(Owin.IAppBuilder,System.Delegate)"> |
| | | <summary> |
| | | Adds converters for adapting between disparate application signatures. |
| | | </summary> |
| | | <param name="builder"></param> |
| | | <param name="conversion"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Builder.AppBuilderExtensions.AddSignatureConversion``2(Owin.IAppBuilder,System.Func{``0,``1})"> |
| | | <summary> |
| | | Adds converters for adapting between disparate application signatures. |
| | | </summary> |
| | | <typeparam name="T1"></typeparam> |
| | | <typeparam name="T2"></typeparam> |
| | | <param name="builder"></param> |
| | | <param name="conversion"></param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Helpers.WebHelpers"> |
| | | <summary> |
| | | Provides helper methods for processing requests. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Helpers.WebHelpers.ParseForm(System.String)"> |
| | | <summary> |
| | | Parses an HTTP form body. |
| | | </summary> |
| | | <param name="text">The HTTP form body to parse.</param> |
| | | <returns>The <see cref="T:Microsoft.Owin.IFormCollection" /> object containing the parsed HTTP form body.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.AppFuncTransition"> |
| | | <summary> |
| | | Converts between an OwinMiddlware and an <typeref name="Func<IDictionary<string,object>, Task>"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.OwinMiddleware"> |
| | | <summary> |
| | | An abstract base class for a standard middleware pattern. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinMiddleware.#ctor(Microsoft.Owin.OwinMiddleware)"> |
| | | <summary> |
| | | Instantiates the middleware with an optional pointer to the next component. |
| | | </summary> |
| | | <param name="next"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinMiddleware.Invoke(Microsoft.Owin.IOwinContext)"> |
| | | <summary> |
| | | Process an individual request. |
| | | </summary> |
| | | <param name="context"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinMiddleware.Next"> |
| | | <summary> |
| | | The optional next component. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.AppFuncTransition.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="next"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.AppFuncTransition.Invoke(Microsoft.Owin.IOwinContext)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="context"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.OwinMiddlewareTransition"> |
| | | <summary> |
| | | Transitions between <typeref name="Func<IDictionary<string,object>, Task>"/> and OwinMiddleware. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.OwinMiddlewareTransition.#ctor(Microsoft.Owin.OwinMiddleware)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="next"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.OwinMiddlewareTransition.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="environment">OWIN environment dictionary which stores state information about the request, response and relevant server state.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Infrastructure.SignatureConversions"> |
| | | <summary> |
| | | Adds adapters between <typeref name="Func<IDictionary<string,object>, Task>"/> and OwinMiddleware. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Infrastructure.SignatureConversions.AddConversions(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Adds adapters between <typeref name="Func<IDictionary<string,object>, Task>"/> and OwinMiddleware. |
| | | </summary> |
| | | <param name="app"></param> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.OwinRequest"> |
| | | <summary> |
| | | This wraps OWIN environment dictionary and provides strongly typed accessors. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinRequest.#ctor"> |
| | | <summary> |
| | | Create a new context with only request and response header collections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinRequest.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Create a new environment wrapper exposing request properties. |
| | | </summary> |
| | | <param name="environment">OWIN environment dictionary which stores state information about the request, response and relevant server state.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinRequest.ReadFormAsync"> |
| | | <summary> |
| | | Asynchronously reads and parses the request body as a form. |
| | | </summary> |
| | | <returns>The parsed form data.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinRequest.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a value from the OWIN environment, or returns default(T) if not present. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key or the default(T) if not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinRequest.Set``1(System.String,``0)"> |
| | | <summary> |
| | | Sets the given key and value in the OWIN environment. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Environment"> |
| | | <summary> |
| | | Gets the OWIN environment. |
| | | </summary> |
| | | <returns>The OWIN environment.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Context"> |
| | | <summary> |
| | | Gets the request context. |
| | | </summary> |
| | | <returns>The request context.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Method"> |
| | | <summary> |
| | | Gets or set the HTTP method. |
| | | </summary> |
| | | <returns>The HTTP method.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Scheme"> |
| | | <summary> |
| | | Gets or set the HTTP request scheme from owin.RequestScheme. |
| | | </summary> |
| | | <returns>The HTTP request scheme from owin.RequestScheme.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.IsSecure"> |
| | | <summary> |
| | | Returns true if the owin.RequestScheme is https. |
| | | </summary> |
| | | <returns>true if this request is using https; otherwise, false.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Host"> |
| | | <summary> |
| | | Gets or set the Host header. May include the port. |
| | | </summary> |
| | | <return>The Host header.</return> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.PathBase"> |
| | | <summary> |
| | | Gets or set the owin.RequestPathBase. |
| | | </summary> |
| | | <returns>The owin.RequestPathBase.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Path"> |
| | | <summary> |
| | | Gets or set the request path from owin.RequestPath. |
| | | </summary> |
| | | <returns>The request path from owin.RequestPath.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.QueryString"> |
| | | <summary> |
| | | Gets or set the query string from owin.RequestQueryString. |
| | | </summary> |
| | | <returns>The query string from owin.RequestQueryString.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Query"> |
| | | <summary> |
| | | Gets the query value collection parsed from owin.RequestQueryString. |
| | | </summary> |
| | | <returns>The query value collection parsed from owin.RequestQueryString.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Uri"> |
| | | <summary> |
| | | Gets the uniform resource identifier (URI) associated with the request. |
| | | </summary> |
| | | <returns>The uniform resource identifier (URI) associated with the request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Protocol"> |
| | | <summary> |
| | | Gets or set the owin.RequestProtocol. |
| | | </summary> |
| | | <returns>The owin.RequestProtocol.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Headers"> |
| | | <summary> |
| | | Gets the request headers. |
| | | </summary> |
| | | <returns>The request headers.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Cookies"> |
| | | <summary> |
| | | Gets the collection of Cookies for this request. |
| | | </summary> |
| | | <returns>The collection of Cookies for this request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.ContentType"> |
| | | <summary> |
| | | Gets or sets the Content-Type header. |
| | | </summary> |
| | | <returns>The Content-Type header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.CacheControl"> |
| | | <summary> |
| | | Gets or sets the Cache-Control header. |
| | | </summary> |
| | | <returns>The Cache-Control header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.MediaType"> |
| | | <summary> |
| | | Gets or sets the Media-Type header. |
| | | </summary> |
| | | <returns>The Media-Type header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Accept"> |
| | | <summary> |
| | | Gets or set the Accept header. |
| | | </summary> |
| | | <returns>The Accept header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.Body"> |
| | | <summary> |
| | | Gets or set the owin.RequestBody Stream. |
| | | </summary> |
| | | <returns>The owin.RequestBody Stream.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.CallCancelled"> |
| | | <summary> |
| | | Gets or sets the cancellation token for the request. |
| | | </summary> |
| | | <returns>The cancellation token for the request.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.LocalIpAddress"> |
| | | <summary> |
| | | Gets or set the server.LocalIpAddress. |
| | | </summary> |
| | | <returns>The server.LocalIpAddress.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.LocalPort"> |
| | | <summary> |
| | | Gets or set the server.LocalPort. |
| | | </summary> |
| | | <returns>The server.LocalPort.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.RemoteIpAddress"> |
| | | <summary> |
| | | Gets or set the server.RemoteIpAddress. |
| | | </summary> |
| | | <returns>The server.RemoteIpAddress.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.RemotePort"> |
| | | <summary> |
| | | Gets or set the server.RemotePort. |
| | | </summary> |
| | | <returns>The server.RemotePort.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinRequest.User"> |
| | | <summary> |
| | | Gets or set the server.User. |
| | | </summary> |
| | | <returns>The server.User.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.OwinResponse"> |
| | | <summary> |
| | | This wraps OWIN environment dictionary and provides strongly typed accessors. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.#ctor"> |
| | | <summary> |
| | | Create a new context with only request and response header collections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | Creates a new environment wrapper exposing response properties. |
| | | </summary> |
| | | <param name="environment">OWIN environment dictionary which stores state information about the request, response and relevant server state.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.OnSendingHeaders(System.Action{System.Object},System.Object)"> |
| | | <summary> |
| | | Registers for an event that fires when the response headers are sent. |
| | | </summary> |
| | | <param name="callback">The callback method.</param> |
| | | <param name="state">The callback state.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.Redirect(System.String)"> |
| | | <summary> |
| | | Sets a 302 response status code and the Location header. |
| | | </summary> |
| | | <param name="location">The location where to redirect the client.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.Write(System.String)"> |
| | | <summary> |
| | | Writes the given text to the response body stream using UTF-8. |
| | | </summary> |
| | | <param name="text">The response data.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.Write(System.Byte[])"> |
| | | <summary> |
| | | Writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.Write(System.Byte[],System.Int32,System.Int32)"> |
| | | <summary> |
| | | Writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <param name="offset">The zero-based byte offset in the <paramref name="data" /> parameter at which to begin copying bytes.</param> |
| | | <param name="count">The number of bytes to write.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.WriteAsync(System.String)"> |
| | | <summary> |
| | | Asynchronously writes the given text to the response body stream using UTF-8. |
| | | </summary> |
| | | <param name="text">The response data.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.WriteAsync(System.String,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Asynchronously writes the given text to the response body stream using UTF-8. |
| | | </summary> |
| | | <param name="text">The response data.</param> |
| | | <param name="token">A token used to indicate cancellation.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.WriteAsync(System.Byte[])"> |
| | | <summary> |
| | | Asynchronously writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.WriteAsync(System.Byte[],System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Asynchronously writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <param name="token">A token used to indicate cancellation.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Asynchronously writes the given bytes to the response body stream. |
| | | </summary> |
| | | <param name="data">The response data.</param> |
| | | <param name="offset">The zero-based byte offset in the <paramref name="data" /> parameter at which to begin copying bytes.</param> |
| | | <param name="count">The number of bytes to write.</param> |
| | | <param name="token">A token used to indicate cancellation.</param> |
| | | <returns>A Task tracking the state of the write operation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.Get``1(System.String)"> |
| | | <summary> |
| | | Gets a value from the OWIN environment, or returns default(T) if not present. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to get.</param> |
| | | <returns>The value with the specified key or the default(T) if not present.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.OwinResponse.Set``1(System.String,``0)"> |
| | | <summary> |
| | | Sets the given key and value in the OWIN environment. |
| | | </summary> |
| | | <typeparam name="T">The type of the value.</typeparam> |
| | | <param name="key">The key of the value to set.</param> |
| | | <param name="value">The value to set.</param> |
| | | <returns>This instance.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Environment"> |
| | | <summary> |
| | | Gets the OWIN environment. |
| | | </summary> |
| | | <returns>The OWIN environment.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Context"> |
| | | <summary> |
| | | Gets the request context. |
| | | </summary> |
| | | <returns>The request context.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.StatusCode"> |
| | | <summary> |
| | | Gets or sets the optional owin.ResponseStatusCode. |
| | | </summary> |
| | | <returns>The optional owin.ResponseStatusCode, or 200 if not set.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.ReasonPhrase"> |
| | | <summary> |
| | | Gets or sets the the optional owin.ResponseReasonPhrase. |
| | | </summary> |
| | | <returns>The the optional owin.ResponseReasonPhrase.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Protocol"> |
| | | <summary> |
| | | Gets or sets the owin.ResponseProtocol. |
| | | </summary> |
| | | <returns>The owin.ResponseProtocol.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Headers"> |
| | | <summary> |
| | | Gets the response header collection. |
| | | </summary> |
| | | <returns>The response header collection.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Cookies"> |
| | | <summary> |
| | | Gets a collection used to manipulate the Set-Cookie header. |
| | | </summary> |
| | | <returns>A collection used to manipulate the Set-Cookie header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.ContentLength"> |
| | | <summary> |
| | | Gets or sets the Content-Length header. |
| | | </summary> |
| | | <returns>The Content-Length header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.ContentType"> |
| | | <summary> |
| | | Gets or sets the Content-Type header. |
| | | </summary> |
| | | <returns>The Content-Type header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Expires"> |
| | | <summary> |
| | | Gets or sets the Expires header. |
| | | </summary> |
| | | <returns>The Expires header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.ETag"> |
| | | <summary> |
| | | Gets or sets the E-Tag header. |
| | | </summary> |
| | | <returns>The E-Tag header.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.OwinResponse.Body"> |
| | | <summary> |
| | | Gets or sets the owin.ResponseBody Stream. |
| | | </summary> |
| | | <returns>The owin.ResponseBody Stream.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.IAuthenticationManager"> |
| | | <summary> |
| | | Used to interact with authentication middleware that have been chained in the pipeline |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.GetAuthenticationTypes"> |
| | | <summary> |
| | | Lists all of the description data provided by authentication middleware that have been chained |
| | | </summary> |
| | | <returns>The authentication descriptions</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.GetAuthenticationTypes(System.Func{Microsoft.Owin.Security.AuthenticationDescription,System.Boolean})"> |
| | | <summary> |
| | | Lists the description data of all of the authentication middleware which are true for a given predicate |
| | | </summary> |
| | | <param name="predicate">A function provided by the caller which returns true for descriptions that should be in the returned list</param> |
| | | <returns>The authentication descriptions</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.AuthenticateAsync(System.String)"> |
| | | <summary> |
| | | Call back through the middleware to ask for a specific form of authentication to be performed |
| | | on the current request |
| | | </summary> |
| | | <param name="authenticationType">Identifies which middleware should respond to the request |
| | | for authentication. This value is compared to the middleware's Options.AuthenticationType property.</param> |
| | | <returns>Returns an object with the results of the authentication. The AuthenticationResult.Identity |
| | | may be null if authentication failed. Even if the Identity property is null, there may still be |
| | | AuthenticationResult.properties and AuthenticationResult.Description information returned.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.AuthenticateAsync(System.String[])"> |
| | | <summary> |
| | | Called to perform any number of authentication mechanisms on the current request. |
| | | </summary> |
| | | <param name="authenticationTypes">Identifies one or more middleware which should attempt to respond</param> |
| | | <returns>Returns the AuthenticationResult information from the middleware which responded. The |
| | | order is determined by the order the middleware are in the pipeline. Latest added is first in the list.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.Challenge(Microsoft.Owin.Security.AuthenticationProperties,System.String[])"> |
| | | <summary> |
| | | Add information into the response environment that will cause the authentication middleware to challenge |
| | | the caller to authenticate. This also changes the status code of the response to 401. The nature of that |
| | | challenge varies greatly, and ranges from adding a response header or changing the 401 status code to |
| | | a 302 redirect. |
| | | </summary> |
| | | <param name="properties">Additional arbitrary values which may be used by particular authentication types.</param> |
| | | <param name="authenticationTypes">Identify which middleware should perform their alterations on the |
| | | response. If the authenticationTypes is null or empty, that means the |
| | | AuthenticationMode.Active middleware should perform their alterations on the response.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.Challenge(System.String[])"> |
| | | <summary> |
| | | Add information into the response environment that will cause the authentication middleware to challenge |
| | | the caller to authenticate. This also changes the status code of the response to 401. The nature of that |
| | | challenge varies greatly, and ranges from adding a response header or changing the 401 status code to |
| | | a 302 redirect. |
| | | </summary> |
| | | <param name="authenticationTypes">Identify which middleware should perform their alterations on the |
| | | response. If the authenticationTypes is null or empty, that means the |
| | | AuthenticationMode.Active middleware should perform their alterations on the response.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.SignIn(Microsoft.Owin.Security.AuthenticationProperties,System.Security.Claims.ClaimsIdentity[])"> |
| | | <summary> |
| | | Add information to the response environment that will cause the appropriate authentication middleware |
| | | to grant a claims-based identity to the recipient of the response. The exact mechanism of this may vary. |
| | | Examples include setting a cookie, to adding a fragment on the redirect url, or producing an OAuth2 |
| | | access code or token response. |
| | | </summary> |
| | | <param name="properties">Contains additional properties the middleware are expected to persist along with |
| | | the claims. These values will be returned as the AuthenticateResult.properties collection when AuthenticateAsync |
| | | is called on subsequent requests.</param> |
| | | <param name="identities">Determines which claims are granted to the signed in user. The |
| | | ClaimsIdentity.AuthenticationType property is compared to the middleware's Options.AuthenticationType |
| | | value to determine which claims are granted by which middleware. The recommended use is to have a single |
| | | ClaimsIdentity which has the AuthenticationType matching a specific middleware.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.SignIn(System.Security.Claims.ClaimsIdentity[])"> |
| | | <summary> |
| | | Add information to the response environment that will cause the appropriate authentication middleware |
| | | to grant a claims-based identity to the recipient of the response. The exact mechanism of this may vary. |
| | | Examples include setting a cookie, to adding a fragment on the redirect url, or producing an OAuth2 |
| | | access code or token response. |
| | | </summary> |
| | | <param name="identities">Determines which claims are granted to the signed in user. The |
| | | ClaimsIdentity.AuthenticationType property is compared to the middleware's Options.AuthenticationType |
| | | value to determine which claims are granted by which middleware. The recommended use is to have a single |
| | | ClaimsIdentity which has the AuthenticationType matching a specific middleware.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.SignOut(Microsoft.Owin.Security.AuthenticationProperties,System.String[])"> |
| | | <summary> |
| | | Add information to the response environment that will cause the appropriate authentication middleware |
| | | to revoke any claims identity associated the the caller. The exact method varies. |
| | | </summary> |
| | | <param name="properties">Additional arbitrary values which may be used by particular authentication types.</param> |
| | | <param name="authenticationTypes">Identifies which middleware should perform the work to sign out. |
| | | Multiple authentication types may be provided to clear out more than one cookie at a time, or to clear |
| | | cookies and redirect to an external single-sign out url.</param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.IAuthenticationManager.SignOut(System.String[])"> |
| | | <summary> |
| | | Add information to the response environment that will cause the appropriate authentication middleware |
| | | to revoke any claims identity associated the the caller. The exact method varies. |
| | | </summary> |
| | | <param name="authenticationTypes">Identifies which middleware should perform the work to sign out. |
| | | Multiple authentication types may be provided to clear out more than one cookie at a time, or to clear |
| | | cookies and redirect to an external single-sign out url.</param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.IAuthenticationManager.User"> |
| | | <summary> |
| | | Returns the current user for the request |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.IAuthenticationManager.AuthenticationResponseChallenge"> |
| | | <summary> |
| | | Exposes the security.Challenge environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.IAuthenticationManager.AuthenticationResponseGrant"> |
| | | <summary> |
| | | Exposes the security.SignIn environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.IAuthenticationManager.AuthenticationResponseRevoke"> |
| | | <summary> |
| | | Exposes the security.SignOut environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationManager.Authenticate(System.String[],System.Action{System.Security.Principal.IIdentity,System.Collections.Generic.IDictionary{System.String,System.String},System.Collections.Generic.IDictionary{System.String,System.Object},System.Object},System.Object)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="authenticationTypes"></param> |
| | | <param name="callback"></param> |
| | | <param name="state"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationManager.AuthenticationResponseChallenge"> |
| | | <summary> |
| | | Exposes the security.Challenge environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationManager.AuthenticationResponseGrant"> |
| | | <summary> |
| | | Exposes the security.SignIn environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationManager.AuthenticationResponseRevoke"> |
| | | <summary> |
| | | Exposes the security.SignOut environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationProperties"> |
| | | <summary> |
| | | Dictionary used to store state values about the authentication session. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationProperties.#ctor"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationProperties"/> class |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationProperties.#ctor(System.Collections.Generic.IDictionary{System.String,System.String})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationProperties"/> class |
| | | </summary> |
| | | <param name="dictionary"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationProperties.Dictionary"> |
| | | <summary> |
| | | State values about the authentication session. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationProperties.IsPersistent"> |
| | | <summary> |
| | | Gets or sets whether the authentication session is persisted across multiple requests. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationProperties.RedirectUri"> |
| | | <summary> |
| | | Gets or sets the full path or absolute URI to be used as an http redirect response value. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationProperties.IssuedUtc"> |
| | | <summary> |
| | | Gets or sets the time at which the authentication ticket was issued. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationProperties.ExpiresUtc"> |
| | | <summary> |
| | | Gets or sets the time at which the authentication ticket expires. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationProperties.AllowRefresh"> |
| | | <summary> |
| | | Gets or sets if refreshing the authentication session should be allowed. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationResponseChallenge"> |
| | | <summary> |
| | | Exposes the security.Challenge environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationResponseChallenge.#ctor(System.String[],Microsoft.Owin.Security.AuthenticationProperties)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationResponseChallenge"/> class |
| | | </summary> |
| | | <param name="authenticationTypes"></param> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseChallenge.AuthenticationTypes"> |
| | | <summary> |
| | | List of the authentication types that should send a challenge in the response. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseChallenge.Properties"> |
| | | <summary> |
| | | Dictionary used to store state values about the authentication session. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationResponseGrant"> |
| | | <summary> |
| | | Exposes the security.SignIn environment value as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationResponseGrant.#ctor(System.Security.Claims.ClaimsIdentity,Microsoft.Owin.Security.AuthenticationProperties)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationResponseGrant"/> class. |
| | | </summary> |
| | | <param name="identity"></param> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationResponseGrant.#ctor(System.Security.Claims.ClaimsPrincipal,Microsoft.Owin.Security.AuthenticationProperties)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationResponseGrant"/> class. |
| | | </summary> |
| | | <param name="principal"></param> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseGrant.Identity"> |
| | | <summary> |
| | | The identity associated with the user sign in. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseGrant.Principal"> |
| | | <summary> |
| | | The security principal associated with the user sign in. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseGrant.Properties"> |
| | | <summary> |
| | | Dictionary used to store state values about the authentication session. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Security.AuthenticationResponseRevoke"> |
| | | <summary> |
| | | Exposes the security.SignOut and security.SignOutProperties environment values as a strong type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationResponseRevoke.#ctor(System.String[])"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationResponseRevoke"/> class |
| | | </summary> |
| | | <param name="authenticationTypes"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Security.AuthenticationResponseRevoke.#ctor(System.String[],Microsoft.Owin.Security.AuthenticationProperties)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Security.AuthenticationResponseRevoke"/> class |
| | | </summary> |
| | | <param name="authenticationTypes"></param> |
| | | <param name="properties"></param> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseRevoke.AuthenticationTypes"> |
| | | <summary> |
| | | List of the authentication types that should be revoked on sign out. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.Owin.Security.AuthenticationResponseRevoke.Properties"> |
| | | <summary> |
| | | Dictionary used to store state values about the authentication session. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Logging.DiagnosticsLoggerFactory"> |
| | | <summary> |
| | | Provides an ILoggerFactory based on System.Diagnostics.TraceSource. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.DiagnosticsLoggerFactory.#ctor"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Logging.DiagnosticsLoggerFactory"/> class. |
| | | </summary> |
| | | <summary> |
| | | Creates a factory named "Microsoft.Owin". |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.DiagnosticsLoggerFactory.#ctor(System.Diagnostics.SourceSwitch,System.Diagnostics.TraceListener)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.Owin.Logging.DiagnosticsLoggerFactory"/> class. |
| | | </summary> |
| | | <param name="rootSourceSwitch"></param> |
| | | <param name="rootTraceListener"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.DiagnosticsLoggerFactory.Create(System.String)"> |
| | | <summary> |
| | | Creates a new DiagnosticsLogger for the given component name. |
| | | </summary> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.Owin.Logging.LoggerExtensions"> |
| | | <summary> |
| | | ILogger extension methods for common scenarios. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.IsEnabled(Microsoft.Owin.Logging.ILogger,System.Diagnostics.TraceEventType)"> |
| | | <summary> |
| | | Checks if the given TraceEventType is enabled. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="eventType"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteVerbose(Microsoft.Owin.Logging.ILogger,System.String)"> |
| | | <summary> |
| | | Writes a verbose log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="data"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteInformation(Microsoft.Owin.Logging.ILogger,System.String)"> |
| | | <summary> |
| | | Writes an informational log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteWarning(Microsoft.Owin.Logging.ILogger,System.String,System.String[])"> |
| | | <summary> |
| | | Writes a warning log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | <param name="args"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteWarning(Microsoft.Owin.Logging.ILogger,System.String,System.Exception)"> |
| | | <summary> |
| | | Writes a warning log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | <param name="error"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteError(Microsoft.Owin.Logging.ILogger,System.String)"> |
| | | <summary> |
| | | Writes an error log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteError(Microsoft.Owin.Logging.ILogger,System.String,System.Exception)"> |
| | | <summary> |
| | | Writes an error log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | <param name="error"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteCritical(Microsoft.Owin.Logging.ILogger,System.String)"> |
| | | <summary> |
| | | Writes a critical log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | </member> |
| | | <member name="M:Microsoft.Owin.Logging.LoggerExtensions.WriteCritical(Microsoft.Owin.Logging.ILogger,System.String,System.Exception)"> |
| | | <summary> |
| | | Writes a critical log message. |
| | | </summary> |
| | | <param name="logger"></param> |
| | | <param name="message"></param> |
| | | <param name="error"></param> |
| | | </member> |
| | | </members> |
| | | </doc> |
| | |
| | | <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | </assemblyBinding> |
| | | </runtime> |
| | | <system.codedom> |
| | |
| | | <name>VueWebApi</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="M:VueWebApi.SwaggerConfig.GetXmlCommentsPath(System.String)"> |
| | | <summary> |
| | | XMLè·¯å¾æ¼æ¥ |
| | | </summary> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:VueWebApi.App_Start.SwaggerControllerDescProvider"> |
| | | <summary> |
| | | swaggeræ¾ç¤ºæ§å¶å¨çæè¿° |
| | |
| | | ä»APIææ¡£ä¸è¯»åæ§å¶å¨æè¿° |
| | | </summary> |
| | | <returns>æææ§å¶å¨æè¿°</returns> |
| | | </member> |
| | | <member name="M:VueWebApi.SwaggerConfig.GetXmlCommentsPath(System.String)"> |
| | | <summary> |
| | | XMLè·¯å¾æ¼æ¥ |
| | | </summary> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:VueWebApi.Areas.HelpPage.ApiDescriptionExtensions.GetFriendlyId(System.Web.Http.Description.ApiDescription)"> |
| | | <summary> |
| | |
| | | </summary> |
| | | <param name="documentPath">The physical path to XML document.</param> |
| | | </member> |
| | | <member name="F:VueWebApi.Hubs.ChatHub.userList"> |
| | | <summary> |
| | | éæç¨æ·å表 |
| | | </summary> |
| | | </member> |
| | | <member name="F:VueWebApi.Hubs.ChatHub._connections"> |
| | | <summary> |
| | | ç¨æ·çconnectionIDä¸ç¨æ·å对ç
§è¡¨ |
| | | </summary> |
| | | </member> |
| | | <member name="M:VueWebApi.Hubs.ChatHub.SendByGroup(System.String,System.String,System.String)"> |
| | | <summary> |
| | | åé彿°ï¼å端触åè¯¥å½æ°ç»æå¡å¨ï¼æå¡å¨å¨å°æ¶æ¯åéç»å端ï¼ï¼Clients.All.(彿°å)æ¯å
¨ä½å¹¿æï¼å¦å¤Clientsæä¾äºç»æï¼å¹¿ææé¤ï¼ç»ææé¤ï¼æå®ç¨æ·æåççï¼ |
| | | è¯¥å½æ°åå¨åç«¯ä½¿ç¨æ¶ä¸å®è¦æ³¨æï¼å端è°ç¨è¯¥å½æ°æ¶ï¼å½æ°é¦åæ¯ä¸å®è¦å°å |
| | | </summary> |
| | | <param name="name1">åèµ·è
</param> |
| | | <param name="name2">æ¶æ¯æ¥æ¶è
</param> |
| | | <param name="cont">æ¶æ¯å
容</param> |
| | | </member> |
| | | <member name="M:VueWebApi.Hubs.ChatHub.SendLogin(System.String)"> |
| | | <summary> |
| | | ç¨æ·ä¸çº¿å½æ° |
| | | </summary> |
| | | <param name="name"></param> |
| | | </member> |
| | | <member name="M:VueWebApi.Controllers.AppDeviceManageController.CheckScanDeviceQrCodeData(System.String)"> |
| | | <summary> |
| | | æ¥å¸¸ç¹æ£,æ«æå·¥ä½/设å¤äºç»´ç |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <title></title> |
| | | <script src="../Scripts/jquery-3.4.1.min.js"></script> |
| | | <script src="../Scripts/jquery.signalR-2.2.2.min.js"></script> |
| | | <script src="/SignalR/Hubs"></script> |
| | | </head> |
| | | <body> |
| | | <h1>æµç¨æ¼ç¤º</h1> |
| | | <input type="hidden" id="displayname" /> |
| | | <h2 id="thisname"></h2><br /> |
| | | <select id="username" style="width:153px;"> |
| | | </select> |
| | | <input id="cont" type="text" style="width:300px;"> |
| | | <input id="send" type="button" value="åé" /> |
| | | <div> |
| | | <h1 id="messgae"></h1> |
| | | </div> |
| | | <script type="text/javascript"> |
| | | |
| | | $(function () { |
| | | //å端Hubç使ç¨ï¼æ³¨æçæ¯ï¼Hubçå忝ChatHubï¼è¿éä½¿ç¨æ¶é¦åæ¯å°å |
| | | var work = $.connection.chatHub; |
| | | /*$('#displayname').val(prompt('请è¾å
¥æµç§°:', ''));*/ |
| | | $('#displayname').val("å¼ ä¸"); |
| | | $('#thisname').text('å½åç¨æ·ï¼' + $('#displayname').val()); |
| | | |
| | | |
| | | |
| | | //对åºå端çSendMessage彿°ï¼æ¶æ¯æ¥æ¶å½æ° |
| | | work.client.sendMessage = function (message) { |
| | | $('#messgae').append(message + '</br>') |
| | | }; |
| | | |
| | | |
| | | |
| | | //å端SendLoginè°ç¨åï¼äº§ççloginUseråè° |
| | | work.client.loginUser = function (userlist) { |
| | | reloadUser(userlist); |
| | | }; |
| | | |
| | | |
| | | |
| | | //hubè¿æ¥å¼å¯ |
| | | $.connection.hub.start().done(function () { |
| | | var username = $('#displayname').val(); |
| | | //åéä¸çº¿ä¿¡æ¯ |
| | | work.server.sendLogin(username); |
| | | |
| | | //ç¹å»æé®ï¼åéæ¶æ¯ |
| | | $('#send').click(function () { |
| | | var friend = $('#username').val(); |
| | | var cont = $('#cont').val(); |
| | | //è°ç¨åç«¯å½æ°ï¼åéæå®æ¶æ¯ |
| | | work.server.sendByGroup(username, friend, cont); |
| | | }); |
| | | }); |
| | | }); |
| | | |
| | | //éæ°å è½½ç¨æ·å表 |
| | | var reloadUser = function () { |
| | | $("#username").empty(); |
| | | for (i = 0; i < 5; i++) { |
| | | $("#username").append("<option value=" + i + ">" +i + "</option>"); |
| | | } |
| | | } |
| | | //var reloadUser = function (userlist) { |
| | | // $("#username").empty(); |
| | | // for (i = 0; i < userlist.length; i++) { |
| | | // $("#username").append("<option value=" + userlist[i] + ">" + userlist[i] + "</option>"); |
| | | // } |
| | | //} |
| | | </script> |
| | | </body> |
| | | </html> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <title></title> |
| | | <script src="../Scripts/jquery-3.4.1.min.js"></script> |
| | | <script src="../Scripts/jquery.signalR-2.2.2.min.js"></script> |
| | | <script src="/SignalR/Hubs"></script> |
| | | </head> |
| | | <body> |
| | | <h1>æµç¨æ¼ç¤º</h1> |
| | | <input type="hidden" id="displayname" /> |
| | | <h2 id="thisname"></h2><br /> |
| | | <select id="username" style="width:153px;"> |
| | | </select> |
| | | <input id="cont" type="text" style="width:300px;"> |
| | | <input id="send" type="button" value="åé" /> |
| | | <div> |
| | | <h1 id="messgae"></h1> |
| | | </div> |
| | | <script type="text/javascript"> |
| | | |
| | | $(function () { |
| | | //å端Hubç使ç¨ï¼æ³¨æçæ¯ï¼Hubçå忝ChatHubï¼è¿éä½¿ç¨æ¶é¦åæ¯å°å |
| | | var work = $.connection.chatHub; |
| | | /*$('#displayname').val(prompt('请è¾å
¥æµç§°:', ''));*/ |
| | | $('#displayname').val("1"); |
| | | $('#thisname').text('å½åç¨æ·ï¼' + $('#displayname').val()); |
| | | |
| | | |
| | | |
| | | //对åºå端çSendMessage彿°ï¼æ¶æ¯æ¥æ¶å½æ° |
| | | work.client.sendMessage = function (message) { |
| | | $('#messgae').append(message + '</br>') |
| | | }; |
| | | |
| | | |
| | | //hubè¿æ¥å¼å¯ |
| | | $.connection.hub.start().done(function () { |
| | | var username = $('#displayname').val(); |
| | | //åéä¸çº¿ä¿¡æ¯ |
| | | work.server.sendLogin(username); |
| | | |
| | | }); |
| | | }); |
| | | |
| | | //éæ°å è½½ç¨æ·å表 |
| | | //var reloadUser = function () { |
| | | // $("#username").empty(); |
| | | // for (i = 0; i < 5; i++) { |
| | | // $("#username").append("<option value=" + i + ">" +i + "</option>"); |
| | | // } |
| | | //} |
| | | //var reloadUser = function (userlist) { |
| | | // $("#username").empty(); |
| | | // for (i = 0; i < userlist.length; i++) { |
| | | // $("#username").append("<option value=" + userlist[i] + ">" + userlist[i] + "</option>"); |
| | | // } |
| | | //} |
| | | </script> |
| | | </body> |
| | | </html> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /* jquery.signalR.core.js */ |
| | | /*global window:false */ |
| | | /*! |
| | | * ASP.NET SignalR JavaScript Library v2.2.2 |
| | | * http://signalr.net/ |
| | | * |
| | | * Copyright (c) .NET Foundation. All rights reserved. |
| | | * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | * |
| | | */ |
| | | |
| | | /// <reference path="Scripts/jquery-1.6.4.js" /> |
| | | /// <reference path="jquery.signalR.version.js" /> |
| | | (function ($, window, undefined) { |
| | | |
| | | var resources = { |
| | | nojQuery: "jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.", |
| | | noTransportOnInit: "No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.", |
| | | errorOnNegotiate: "Error during negotiation request.", |
| | | stoppedWhileLoading: "The connection was stopped during page load.", |
| | | stoppedWhileNegotiating: "The connection was stopped during the negotiate request.", |
| | | errorParsingNegotiateResponse: "Error parsing negotiate response.", |
| | | errorDuringStartRequest: "Error during start request. Stopping the connection.", |
| | | stoppedDuringStartRequest: "The connection was stopped during the start request.", |
| | | errorParsingStartResponse: "Error parsing start response: '{0}'. Stopping the connection.", |
| | | invalidStartResponse: "Invalid start response: '{0}'. Stopping the connection.", |
| | | protocolIncompatible: "You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.", |
| | | sendFailed: "Send failed.", |
| | | parseFailed: "Failed at parsing response: {0}", |
| | | longPollFailed: "Long polling request failed.", |
| | | eventSourceFailedToConnect: "EventSource failed to connect.", |
| | | eventSourceError: "Error raised by EventSource", |
| | | webSocketClosed: "WebSocket closed.", |
| | | pingServerFailedInvalidResponse: "Invalid ping response when pinging server: '{0}'.", |
| | | pingServerFailed: "Failed to ping server.", |
| | | pingServerFailedStatusCode: "Failed to ping server. Server responded with status code {0}, stopping the connection.", |
| | | pingServerFailedParse: "Failed to parse ping server response, stopping the connection.", |
| | | noConnectionTransport: "Connection is in an invalid state, there is no transport active.", |
| | | webSocketsInvalidState: "The Web Socket transport is in an invalid state, transitioning into reconnecting.", |
| | | reconnectTimeout: "Couldn't reconnect within the configured timeout of {0} ms, disconnecting.", |
| | | reconnectWindowTimeout: "The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection." |
| | | }; |
| | | |
| | | if (typeof ($) !== "function") { |
| | | // no jQuery! |
| | | throw new Error(resources.nojQuery); |
| | | } |
| | | |
| | | var signalR, |
| | | _connection, |
| | | _pageLoaded = (window.document.readyState === "complete"), |
| | | _pageWindow = $(window), |
| | | _negotiateAbortText = "__Negotiate Aborted__", |
| | | events = { |
| | | onStart: "onStart", |
| | | onStarting: "onStarting", |
| | | onReceived: "onReceived", |
| | | onError: "onError", |
| | | onConnectionSlow: "onConnectionSlow", |
| | | onReconnecting: "onReconnecting", |
| | | onReconnect: "onReconnect", |
| | | onStateChanged: "onStateChanged", |
| | | onDisconnect: "onDisconnect" |
| | | }, |
| | | ajaxDefaults = { |
| | | processData: true, |
| | | timeout: null, |
| | | async: true, |
| | | global: false, |
| | | cache: false |
| | | }, |
| | | log = function (msg, logging) { |
| | | if (logging === false) { |
| | | return; |
| | | } |
| | | var m; |
| | | if (typeof (window.console) === "undefined") { |
| | | return; |
| | | } |
| | | m = "[" + new Date().toTimeString() + "] SignalR: " + msg; |
| | | if (window.console.debug) { |
| | | window.console.debug(m); |
| | | } else if (window.console.log) { |
| | | window.console.log(m); |
| | | } |
| | | }, |
| | | |
| | | changeState = function (connection, expectedState, newState) { |
| | | if (expectedState === connection.state) { |
| | | connection.state = newState; |
| | | |
| | | $(connection).triggerHandler(events.onStateChanged, [{ oldState: expectedState, newState: newState }]); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | |
| | | isDisconnecting = function (connection) { |
| | | return connection.state === signalR.connectionState.disconnected; |
| | | }, |
| | | |
| | | supportsKeepAlive = function (connection) { |
| | | return connection._.keepAliveData.activated && |
| | | connection.transport.supportsKeepAlive(connection); |
| | | }, |
| | | |
| | | configureStopReconnectingTimeout = function (connection) { |
| | | var stopReconnectingTimeout, |
| | | onReconnectTimeout; |
| | | |
| | | // Check if this connection has already been configured to stop reconnecting after a specified timeout. |
| | | // Without this check if a connection is stopped then started events will be bound multiple times. |
| | | if (!connection._.configuredStopReconnectingTimeout) { |
| | | onReconnectTimeout = function (connection) { |
| | | var message = signalR._.format(signalR.resources.reconnectTimeout, connection.disconnectTimeout); |
| | | connection.log(message); |
| | | $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ "TimeoutException")]); |
| | | connection.stop(/* async */ false, /* notifyServer */ false); |
| | | }; |
| | | |
| | | connection.reconnecting(function () { |
| | | var connection = this; |
| | | |
| | | // Guard against state changing in a previous user defined even handler |
| | | if (connection.state === signalR.connectionState.reconnecting) { |
| | | stopReconnectingTimeout = window.setTimeout(function () { onReconnectTimeout(connection); }, connection.disconnectTimeout); |
| | | } |
| | | }); |
| | | |
| | | connection.stateChanged(function (data) { |
| | | if (data.oldState === signalR.connectionState.reconnecting) { |
| | | // Clear the pending reconnect timeout check |
| | | window.clearTimeout(stopReconnectingTimeout); |
| | | } |
| | | }); |
| | | |
| | | connection._.configuredStopReconnectingTimeout = true; |
| | | } |
| | | }; |
| | | |
| | | signalR = function (url, qs, logging) { |
| | | /// <summary>Creates a new SignalR connection for the given url</summary> |
| | | /// <param name="url" type="String">The URL of the long polling endpoint</param> |
| | | /// <param name="qs" type="Object"> |
| | | /// [Optional] Custom querystring parameters to add to the connection URL. |
| | | /// If an object, every non-function member will be added to the querystring. |
| | | /// If a string, it's added to the QS as specified. |
| | | /// </param> |
| | | /// <param name="logging" type="Boolean"> |
| | | /// [Optional] A flag indicating whether connection logging is enabled to the browser |
| | | /// console/log. Defaults to false. |
| | | /// </param> |
| | | |
| | | return new signalR.fn.init(url, qs, logging); |
| | | }; |
| | | |
| | | signalR._ = { |
| | | defaultContentType: "application/x-www-form-urlencoded; charset=UTF-8", |
| | | |
| | | ieVersion: (function () { |
| | | var version, |
| | | matches; |
| | | |
| | | if (window.navigator.appName === 'Microsoft Internet Explorer') { |
| | | // Check if the user agent has the pattern "MSIE (one or more numbers).(one or more numbers)"; |
| | | matches = /MSIE ([0-9]+\.[0-9]+)/.exec(window.navigator.userAgent); |
| | | |
| | | if (matches) { |
| | | version = window.parseFloat(matches[1]); |
| | | } |
| | | } |
| | | |
| | | // undefined value means not IE |
| | | return version; |
| | | })(), |
| | | |
| | | error: function (message, source, context) { |
| | | var e = new Error(message); |
| | | e.source = source; |
| | | |
| | | if (typeof context !== "undefined") { |
| | | e.context = context; |
| | | } |
| | | |
| | | return e; |
| | | }, |
| | | |
| | | transportError: function (message, transport, source, context) { |
| | | var e = this.error(message, source, context); |
| | | e.transport = transport ? transport.name : undefined; |
| | | return e; |
| | | }, |
| | | |
| | | format: function () { |
| | | /// <summary>Usage: format("Hi {0}, you are {1}!", "Foo", 100) </summary> |
| | | var s = arguments[0]; |
| | | for (var i = 0; i < arguments.length - 1; i++) { |
| | | s = s.replace("{" + i + "}", arguments[i + 1]); |
| | | } |
| | | return s; |
| | | }, |
| | | |
| | | firefoxMajorVersion: function (userAgent) { |
| | | // Firefox user agents: http://useragentstring.com/pages/Firefox/ |
| | | var matches = userAgent.match(/Firefox\/(\d+)/); |
| | | if (!matches || !matches.length || matches.length < 2) { |
| | | return 0; |
| | | } |
| | | return parseInt(matches[1], 10 /* radix */); |
| | | }, |
| | | |
| | | configurePingInterval: function (connection) { |
| | | var config = connection._.config, |
| | | onFail = function (error) { |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | }; |
| | | |
| | | if (config && !connection._.pingIntervalId && config.pingInterval) { |
| | | connection._.pingIntervalId = window.setInterval(function () { |
| | | signalR.transports._logic.pingServer(connection).fail(onFail); |
| | | }, config.pingInterval); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | signalR.events = events; |
| | | |
| | | signalR.resources = resources; |
| | | |
| | | signalR.ajaxDefaults = ajaxDefaults; |
| | | |
| | | signalR.changeState = changeState; |
| | | |
| | | signalR.isDisconnecting = isDisconnecting; |
| | | |
| | | signalR.connectionState = { |
| | | connecting: 0, |
| | | connected: 1, |
| | | reconnecting: 2, |
| | | disconnected: 4 |
| | | }; |
| | | |
| | | signalR.hub = { |
| | | start: function () { |
| | | // This will get replaced with the real hub connection start method when hubs is referenced correctly |
| | | throw new Error("SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'></script>."); |
| | | } |
| | | }; |
| | | |
| | | // .on() was added in version 1.7.0, .load() was removed in version 3.0.0 so we fallback to .load() if .on() does |
| | | // not exist to not break existing applications |
| | | if (typeof _pageWindow.on == "function") { |
| | | _pageWindow.on("load", function () { _pageLoaded = true; }); |
| | | } |
| | | else { |
| | | _pageWindow.load(function () { _pageLoaded = true; }); |
| | | } |
| | | |
| | | function validateTransport(requestedTransport, connection) { |
| | | /// <summary>Validates the requested transport by cross checking it with the pre-defined signalR.transports</summary> |
| | | /// <param name="requestedTransport" type="Object">The designated transports that the user has specified.</param> |
| | | /// <param name="connection" type="signalR">The connection that will be using the requested transports. Used for logging purposes.</param> |
| | | /// <returns type="Object" /> |
| | | |
| | | if ($.isArray(requestedTransport)) { |
| | | // Go through transport array and remove an "invalid" tranports |
| | | for (var i = requestedTransport.length - 1; i >= 0; i--) { |
| | | var transport = requestedTransport[i]; |
| | | if ($.type(transport) !== "string" || !signalR.transports[transport]) { |
| | | connection.log("Invalid transport: " + transport + ", removing it from the transports list."); |
| | | requestedTransport.splice(i, 1); |
| | | } |
| | | } |
| | | |
| | | // Verify we still have transports left, if we dont then we have invalid transports |
| | | if (requestedTransport.length === 0) { |
| | | connection.log("No transports remain within the specified transport array."); |
| | | requestedTransport = null; |
| | | } |
| | | } else if (!signalR.transports[requestedTransport] && requestedTransport !== "auto") { |
| | | connection.log("Invalid transport: " + requestedTransport.toString() + "."); |
| | | requestedTransport = null; |
| | | } else if (requestedTransport === "auto" && signalR._.ieVersion <= 8) { |
| | | // If we're doing an auto transport and we're IE8 then force longPolling, #1764 |
| | | return ["longPolling"]; |
| | | |
| | | } |
| | | |
| | | return requestedTransport; |
| | | } |
| | | |
| | | function getDefaultPort(protocol) { |
| | | if (protocol === "http:") { |
| | | return 80; |
| | | } else if (protocol === "https:") { |
| | | return 443; |
| | | } |
| | | } |
| | | |
| | | function addDefaultPort(protocol, url) { |
| | | // Remove ports from url. We have to check if there's a / or end of line |
| | | // following the port in order to avoid removing ports such as 8080. |
| | | if (url.match(/:\d+$/)) { |
| | | return url; |
| | | } else { |
| | | return url + ":" + getDefaultPort(protocol); |
| | | } |
| | | } |
| | | |
| | | function ConnectingMessageBuffer(connection, drainCallback) { |
| | | var that = this, |
| | | buffer = []; |
| | | |
| | | that.tryBuffer = function (message) { |
| | | if (connection.state === $.signalR.connectionState.connecting) { |
| | | buffer.push(message); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }; |
| | | |
| | | that.drain = function () { |
| | | // Ensure that the connection is connected when we drain (do not want to drain while a connection is not active) |
| | | if (connection.state === $.signalR.connectionState.connected) { |
| | | while (buffer.length > 0) { |
| | | drainCallback(buffer.shift()); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | that.clear = function () { |
| | | buffer = []; |
| | | }; |
| | | } |
| | | |
| | | signalR.fn = signalR.prototype = { |
| | | init: function (url, qs, logging) { |
| | | var $connection = $(this); |
| | | |
| | | this.url = url; |
| | | this.qs = qs; |
| | | this.lastError = null; |
| | | this._ = { |
| | | keepAliveData: {}, |
| | | connectingMessageBuffer: new ConnectingMessageBuffer(this, function (message) { |
| | | $connection.triggerHandler(events.onReceived, [message]); |
| | | }), |
| | | lastMessageAt: new Date().getTime(), |
| | | lastActiveAt: new Date().getTime(), |
| | | beatInterval: 5000, // Default value, will only be overridden if keep alive is enabled, |
| | | beatHandle: null, |
| | | totalTransportConnectTimeout: 0 // This will be the sum of the TransportConnectTimeout sent in response to negotiate and connection.transportConnectTimeout |
| | | }; |
| | | if (typeof (logging) === "boolean") { |
| | | this.logging = logging; |
| | | } |
| | | }, |
| | | |
| | | _parseResponse: function (response) { |
| | | var that = this; |
| | | |
| | | if (!response) { |
| | | return response; |
| | | } else if (typeof response === "string") { |
| | | return that.json.parse(response); |
| | | } else { |
| | | return response; |
| | | } |
| | | }, |
| | | |
| | | _originalJson: window.JSON, |
| | | |
| | | json: window.JSON, |
| | | |
| | | isCrossDomain: function (url, against) { |
| | | /// <summary>Checks if url is cross domain</summary> |
| | | /// <param name="url" type="String">The base URL</param> |
| | | /// <param name="against" type="Object"> |
| | | /// An optional argument to compare the URL against, if not specified it will be set to window.location. |
| | | /// If specified it must contain a protocol and a host property. |
| | | /// </param> |
| | | var link; |
| | | |
| | | url = $.trim(url); |
| | | |
| | | against = against || window.location; |
| | | |
| | | if (url.indexOf("http") !== 0) { |
| | | return false; |
| | | } |
| | | |
| | | // Create an anchor tag. |
| | | link = window.document.createElement("a"); |
| | | link.href = url; |
| | | |
| | | // When checking for cross domain we have to special case port 80 because the window.location will remove the |
| | | return link.protocol + addDefaultPort(link.protocol, link.host) !== against.protocol + addDefaultPort(against.protocol, against.host); |
| | | }, |
| | | |
| | | ajaxDataType: "text", |
| | | |
| | | contentType: "application/json; charset=UTF-8", |
| | | |
| | | logging: false, |
| | | |
| | | state: signalR.connectionState.disconnected, |
| | | |
| | | clientProtocol: "1.5", |
| | | |
| | | reconnectDelay: 2000, |
| | | |
| | | transportConnectTimeout: 0, |
| | | |
| | | disconnectTimeout: 30000, // This should be set by the server in response to the negotiate request (30s default) |
| | | |
| | | reconnectWindow: 30000, // This should be set by the server in response to the negotiate request |
| | | |
| | | keepAliveWarnAt: 2 / 3, // Warn user of slow connection if we breach the X% mark of the keep alive timeout |
| | | |
| | | start: function (options, callback) { |
| | | /// <summary>Starts the connection</summary> |
| | | /// <param name="options" type="Object">Options map</param> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection has started</param> |
| | | var connection = this, |
| | | config = { |
| | | pingInterval: 300000, |
| | | waitForPageLoad: true, |
| | | transport: "auto", |
| | | jsonp: false |
| | | }, |
| | | initialize, |
| | | deferred = connection._deferral || $.Deferred(), // Check to see if there is a pre-existing deferral that's being built on, if so we want to keep using it |
| | | parser = window.document.createElement("a"); |
| | | |
| | | connection.lastError = null; |
| | | |
| | | // Persist the deferral so that if start is called multiple times the same deferral is used. |
| | | connection._deferral = deferred; |
| | | |
| | | if (!connection.json) { |
| | | // no JSON! |
| | | throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8."); |
| | | } |
| | | |
| | | if ($.type(options) === "function") { |
| | | // Support calling with single callback parameter |
| | | callback = options; |
| | | } else if ($.type(options) === "object") { |
| | | $.extend(config, options); |
| | | if ($.type(config.callback) === "function") { |
| | | callback = config.callback; |
| | | } |
| | | } |
| | | |
| | | config.transport = validateTransport(config.transport, connection); |
| | | |
| | | // If the transport is invalid throw an error and abort start |
| | | if (!config.transport) { |
| | | throw new Error("SignalR: Invalid transport(s) specified, aborting start."); |
| | | } |
| | | |
| | | connection._.config = config; |
| | | |
| | | // Check to see if start is being called prior to page load |
| | | // If waitForPageLoad is true we then want to re-direct function call to the window load event |
| | | if (!_pageLoaded && config.waitForPageLoad === true) { |
| | | connection._.deferredStartHandler = function () { |
| | | connection.start(options, callback); |
| | | }; |
| | | _pageWindow.bind("load", connection._.deferredStartHandler); |
| | | |
| | | return deferred.promise(); |
| | | } |
| | | |
| | | // If we're already connecting just return the same deferral as the original connection start |
| | | if (connection.state === signalR.connectionState.connecting) { |
| | | return deferred.promise(); |
| | | } else if (changeState(connection, |
| | | signalR.connectionState.disconnected, |
| | | signalR.connectionState.connecting) === false) { |
| | | // We're not connecting so try and transition into connecting. |
| | | // If we fail to transition then we're either in connected or reconnecting. |
| | | |
| | | deferred.resolve(connection); |
| | | return deferred.promise(); |
| | | } |
| | | |
| | | configureStopReconnectingTimeout(connection); |
| | | |
| | | // Resolve the full url |
| | | parser.href = connection.url; |
| | | if (!parser.protocol || parser.protocol === ":") { |
| | | connection.protocol = window.document.location.protocol; |
| | | connection.host = parser.host || window.document.location.host; |
| | | } else { |
| | | connection.protocol = parser.protocol; |
| | | connection.host = parser.host; |
| | | } |
| | | |
| | | connection.baseUrl = connection.protocol + "//" + connection.host; |
| | | |
| | | // Set the websocket protocol |
| | | connection.wsProtocol = connection.protocol === "https:" ? "wss://" : "ws://"; |
| | | |
| | | // If jsonp with no/auto transport is specified, then set the transport to long polling |
| | | // since that is the only transport for which jsonp really makes sense. |
| | | // Some developers might actually choose to specify jsonp for same origin requests |
| | | // as demonstrated by Issue #623. |
| | | if (config.transport === "auto" && config.jsonp === true) { |
| | | config.transport = "longPolling"; |
| | | } |
| | | |
| | | // If the url is protocol relative, prepend the current windows protocol to the url. |
| | | if (connection.url.indexOf("//") === 0) { |
| | | connection.url = window.location.protocol + connection.url; |
| | | connection.log("Protocol relative URL detected, normalizing it to '" + connection.url + "'."); |
| | | } |
| | | |
| | | if (this.isCrossDomain(connection.url)) { |
| | | connection.log("Auto detected cross domain url."); |
| | | |
| | | if (config.transport === "auto") { |
| | | // TODO: Support XDM with foreverFrame |
| | | config.transport = ["webSockets", "serverSentEvents", "longPolling"]; |
| | | } |
| | | |
| | | if (typeof (config.withCredentials) === "undefined") { |
| | | config.withCredentials = true; |
| | | } |
| | | |
| | | // Determine if jsonp is the only choice for negotiation, ajaxSend and ajaxAbort. |
| | | // i.e. if the browser doesn't supports CORS |
| | | // If it is, ignore any preference to the contrary, and switch to jsonp. |
| | | if (!config.jsonp) { |
| | | config.jsonp = !$.support.cors; |
| | | |
| | | if (config.jsonp) { |
| | | connection.log("Using jsonp because this browser doesn't support CORS."); |
| | | } |
| | | } |
| | | |
| | | connection.contentType = signalR._.defaultContentType; |
| | | } |
| | | |
| | | connection.withCredentials = config.withCredentials; |
| | | |
| | | connection.ajaxDataType = config.jsonp ? "jsonp" : "text"; |
| | | |
| | | $(connection).bind(events.onStart, function (e, data) { |
| | | if ($.type(callback) === "function") { |
| | | callback.call(connection); |
| | | } |
| | | deferred.resolve(connection); |
| | | }); |
| | | |
| | | connection._.initHandler = signalR.transports._logic.initHandler(connection); |
| | | |
| | | initialize = function (transports, index) { |
| | | var noTransportError = signalR._.error(resources.noTransportOnInit); |
| | | |
| | | index = index || 0; |
| | | if (index >= transports.length) { |
| | | if (index === 0) { |
| | | connection.log("No transports supported by the server were selected."); |
| | | } else if (index === 1) { |
| | | connection.log("No fallback transports were selected."); |
| | | } else { |
| | | connection.log("Fallback transports exhausted."); |
| | | } |
| | | |
| | | // No transport initialized successfully |
| | | $(connection).triggerHandler(events.onError, [noTransportError]); |
| | | deferred.reject(noTransportError); |
| | | // Stop the connection if it has connected and move it into the disconnected state |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | // The connection was aborted |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | return; |
| | | } |
| | | |
| | | var transportName = transports[index], |
| | | transport = signalR.transports[transportName], |
| | | onFallback = function () { |
| | | initialize(transports, index + 1); |
| | | }; |
| | | |
| | | connection.transport = transport; |
| | | |
| | | try { |
| | | connection._.initHandler.start(transport, function () { // success |
| | | // Firefox 11+ doesn't allow sync XHR withCredentials: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials |
| | | var isFirefox11OrGreater = signalR._.firefoxMajorVersion(window.navigator.userAgent) >= 11, |
| | | asyncAbort = !!connection.withCredentials && isFirefox11OrGreater; |
| | | |
| | | connection.log("The start request succeeded. Transitioning to the connected state."); |
| | | |
| | | if (supportsKeepAlive(connection)) { |
| | | signalR.transports._logic.monitorKeepAlive(connection); |
| | | } |
| | | |
| | | signalR.transports._logic.startHeartbeat(connection); |
| | | |
| | | // Used to ensure low activity clients maintain their authentication. |
| | | // Must be configured once a transport has been decided to perform valid ping requests. |
| | | signalR._.configurePingInterval(connection); |
| | | |
| | | if (!changeState(connection, |
| | | signalR.connectionState.connecting, |
| | | signalR.connectionState.connected)) { |
| | | connection.log("WARNING! The connection was not in the connecting state."); |
| | | } |
| | | |
| | | // Drain any incoming buffered messages (messages that came in prior to connect) |
| | | connection._.connectingMessageBuffer.drain(); |
| | | |
| | | $(connection).triggerHandler(events.onStart); |
| | | |
| | | // wire the stop handler for when the user leaves the page |
| | | _pageWindow.bind("unload", function () { |
| | | connection.log("Window unloading, stopping the connection."); |
| | | |
| | | connection.stop(asyncAbort); |
| | | }); |
| | | |
| | | if (isFirefox11OrGreater) { |
| | | // Firefox does not fire cross-domain XHRs in the normal unload handler on tab close. |
| | | // #2400 |
| | | _pageWindow.bind("beforeunload", function () { |
| | | // If connection.stop() runs runs in beforeunload and fails, it will also fail |
| | | // in unload unless connection.stop() runs after a timeout. |
| | | window.setTimeout(function () { |
| | | connection.stop(asyncAbort); |
| | | }, 0); |
| | | }); |
| | | } |
| | | }, onFallback); |
| | | } |
| | | catch (error) { |
| | | connection.log(transport.name + " transport threw '" + error.message + "' when attempting to start."); |
| | | onFallback(); |
| | | } |
| | | }; |
| | | |
| | | var url = connection.url + "/negotiate", |
| | | onFailed = function (error, connection) { |
| | | var err = signalR._.error(resources.errorOnNegotiate, error, connection._.negotiateRequest); |
| | | |
| | | $(connection).triggerHandler(events.onError, err); |
| | | deferred.reject(err); |
| | | // Stop the connection if negotiate failed |
| | | connection.stop(); |
| | | }; |
| | | |
| | | $(connection).triggerHandler(events.onStarting); |
| | | |
| | | url = signalR.transports._logic.prepareQueryString(connection, url); |
| | | |
| | | connection.log("Negotiating with '" + url + "'."); |
| | | |
| | | // Save the ajax negotiate request object so we can abort it if stop is called while the request is in flight. |
| | | connection._.negotiateRequest = signalR.transports._logic.ajax(connection, { |
| | | url: url, |
| | | error: function (error, statusText) { |
| | | // We don't want to cause any errors if we're aborting our own negotiate request. |
| | | if (statusText !== _negotiateAbortText) { |
| | | onFailed(error, connection); |
| | | } else { |
| | | // This rejection will noop if the deferred has already been resolved or rejected. |
| | | deferred.reject(signalR._.error(resources.stoppedWhileNegotiating, null /* error */, connection._.negotiateRequest)); |
| | | } |
| | | }, |
| | | success: function (result) { |
| | | var res, |
| | | keepAliveData, |
| | | protocolError, |
| | | transports = [], |
| | | supportedTransports = []; |
| | | |
| | | try { |
| | | res = connection._parseResponse(result); |
| | | } catch (error) { |
| | | onFailed(signalR._.error(resources.errorParsingNegotiateResponse, error), connection); |
| | | return; |
| | | } |
| | | |
| | | keepAliveData = connection._.keepAliveData; |
| | | connection.appRelativeUrl = res.Url; |
| | | connection.id = res.ConnectionId; |
| | | connection.token = res.ConnectionToken; |
| | | connection.webSocketServerUrl = res.WebSocketServerUrl; |
| | | |
| | | // The long poll timeout is the ConnectionTimeout plus 10 seconds |
| | | connection._.pollTimeout = res.ConnectionTimeout * 1000 + 10000; // in ms |
| | | |
| | | // Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect |
| | | // after res.DisconnectTimeout seconds. |
| | | connection.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms |
| | | |
| | | // Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout |
| | | connection._.totalTransportConnectTimeout = connection.transportConnectTimeout + res.TransportConnectTimeout * 1000; |
| | | |
| | | // If we have a keep alive |
| | | if (res.KeepAliveTimeout) { |
| | | // Register the keep alive data as activated |
| | | keepAliveData.activated = true; |
| | | |
| | | // Timeout to designate when to force the connection into reconnecting converted to milliseconds |
| | | keepAliveData.timeout = res.KeepAliveTimeout * 1000; |
| | | |
| | | // Timeout to designate when to warn the developer that the connection may be dead or is not responding. |
| | | keepAliveData.timeoutWarning = keepAliveData.timeout * connection.keepAliveWarnAt; |
| | | |
| | | // Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes |
| | | connection._.beatInterval = (keepAliveData.timeout - keepAliveData.timeoutWarning) / 3; |
| | | } else { |
| | | keepAliveData.activated = false; |
| | | } |
| | | |
| | | connection.reconnectWindow = connection.disconnectTimeout + (keepAliveData.timeout || 0); |
| | | |
| | | if (!res.ProtocolVersion || res.ProtocolVersion !== connection.clientProtocol) { |
| | | protocolError = signalR._.error(signalR._.format(resources.protocolIncompatible, connection.clientProtocol, res.ProtocolVersion)); |
| | | $(connection).triggerHandler(events.onError, [protocolError]); |
| | | deferred.reject(protocolError); |
| | | |
| | | return; |
| | | } |
| | | |
| | | $.each(signalR.transports, function (key) { |
| | | if ((key.indexOf("_") === 0) || (key === "webSockets" && !res.TryWebSockets)) { |
| | | return true; |
| | | } |
| | | supportedTransports.push(key); |
| | | }); |
| | | |
| | | if ($.isArray(config.transport)) { |
| | | $.each(config.transport, function (_, transport) { |
| | | if ($.inArray(transport, supportedTransports) >= 0) { |
| | | transports.push(transport); |
| | | } |
| | | }); |
| | | } else if (config.transport === "auto") { |
| | | transports = supportedTransports; |
| | | } else if ($.inArray(config.transport, supportedTransports) >= 0) { |
| | | transports.push(config.transport); |
| | | } |
| | | |
| | | initialize(transports); |
| | | } |
| | | }); |
| | | |
| | | return deferred.promise(); |
| | | }, |
| | | |
| | | starting: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked before anything is sent over the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute before the connection is fully instantiated.</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onStarting, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | send: function (data) { |
| | | /// <summary>Sends data over the connection</summary> |
| | | /// <param name="data" type="String">The data to send over the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | // Connection hasn't been started yet |
| | | throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()"); |
| | | } |
| | | |
| | | if (connection.state === signalR.connectionState.connecting) { |
| | | // Connection hasn't been started yet |
| | | throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started."); |
| | | } |
| | | |
| | | connection.transport.send(connection, data); |
| | | // REVIEW: Should we return deferred here? |
| | | return connection; |
| | | }, |
| | | |
| | | received: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked after anything is received over the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when any data is received on the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReceived, function (e, data) { |
| | | callback.call(connection, data); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | stateChanged: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the connection state changes</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection state changes</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onStateChanged, function (e, data) { |
| | | callback.call(connection, data); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | error: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked after an error occurs with the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when an error occurs on the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onError, function (e, errorData, sendData) { |
| | | connection.lastError = errorData; |
| | | // In practice 'errorData' is the SignalR built error object. |
| | | // In practice 'sendData' is undefined for all error events except those triggered by |
| | | // 'ajaxSend' and 'webSockets.send'.'sendData' is the original send payload. |
| | | callback.call(connection, errorData, sendData); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | disconnected: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the client disconnects</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is broken</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onDisconnect, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | connectionSlow: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the client detects a slow connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is slow</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onConnectionSlow, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | |
| | | return connection; |
| | | }, |
| | | |
| | | reconnecting: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the underlying transport begins reconnecting</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection enters a reconnecting state</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReconnecting, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | reconnected: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the underlying transport reconnects</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is restored</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReconnect, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | stop: function (async, notifyServer) { |
| | | /// <summary>Stops listening</summary> |
| | | /// <param name="async" type="Boolean">Whether or not to asynchronously abort the connection</param> |
| | | /// <param name="notifyServer" type="Boolean">Whether we want to notify the server that we are aborting the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this, |
| | | // Save deferral because this is always cleaned up |
| | | deferral = connection._deferral; |
| | | |
| | | // Verify that we've bound a load event. |
| | | if (connection._.deferredStartHandler) { |
| | | // Unbind the event. |
| | | _pageWindow.unbind("load", connection._.deferredStartHandler); |
| | | } |
| | | |
| | | // Always clean up private non-timeout based state. |
| | | delete connection._.config; |
| | | delete connection._.deferredStartHandler; |
| | | |
| | | // This needs to be checked despite the connection state because a connection start can be deferred until page load. |
| | | // If we've deferred the start due to a page load we need to unbind the "onLoad" -> start event. |
| | | if (!_pageLoaded && (!connection._.config || connection._.config.waitForPageLoad === true)) { |
| | | connection.log("Stopping connection prior to negotiate."); |
| | | |
| | | // If we have a deferral we should reject it |
| | | if (deferral) { |
| | | deferral.reject(signalR._.error(resources.stoppedWhileLoading)); |
| | | } |
| | | |
| | | // Short-circuit because the start has not been fully started. |
| | | return; |
| | | } |
| | | |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("Stopping connection."); |
| | | |
| | | // Clear this no matter what |
| | | window.clearTimeout(connection._.beatHandle); |
| | | window.clearInterval(connection._.pingIntervalId); |
| | | |
| | | if (connection.transport) { |
| | | connection.transport.stop(connection); |
| | | |
| | | if (notifyServer !== false) { |
| | | connection.transport.abort(connection, async); |
| | | } |
| | | |
| | | if (supportsKeepAlive(connection)) { |
| | | signalR.transports._logic.stopMonitoringKeepAlive(connection); |
| | | } |
| | | |
| | | connection.transport = null; |
| | | } |
| | | |
| | | if (connection._.negotiateRequest) { |
| | | // If the negotiation request has already completed this will noop. |
| | | connection._.negotiateRequest.abort(_negotiateAbortText); |
| | | delete connection._.negotiateRequest; |
| | | } |
| | | |
| | | // Ensure that initHandler.stop() is called before connection._deferral is deleted |
| | | if (connection._.initHandler) { |
| | | connection._.initHandler.stop(); |
| | | } |
| | | |
| | | delete connection._deferral; |
| | | delete connection.messageId; |
| | | delete connection.groupsToken; |
| | | delete connection.id; |
| | | delete connection._.pingIntervalId; |
| | | delete connection._.lastMessageAt; |
| | | delete connection._.lastActiveAt; |
| | | |
| | | // Clear out our message buffer |
| | | connection._.connectingMessageBuffer.clear(); |
| | | |
| | | // Clean up this event |
| | | $(connection).unbind(events.onStart); |
| | | |
| | | // Trigger the disconnect event |
| | | changeState(connection, connection.state, signalR.connectionState.disconnected); |
| | | $(connection).triggerHandler(events.onDisconnect); |
| | | |
| | | return connection; |
| | | }, |
| | | |
| | | log: function (msg) { |
| | | log(msg, this.logging); |
| | | } |
| | | }; |
| | | |
| | | signalR.fn.init.prototype = signalR.fn; |
| | | |
| | | signalR.noConflict = function () { |
| | | /// <summary>Reinstates the original value of $.connection and returns the signalR object for manual assignment</summary> |
| | | /// <returns type="signalR" /> |
| | | if ($.connection === signalR) { |
| | | $.connection = _connection; |
| | | } |
| | | return signalR; |
| | | }; |
| | | |
| | | if ($.connection) { |
| | | _connection = $.connection; |
| | | } |
| | | |
| | | $.connection = $.signalR = signalR; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.common.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | startAbortText = "__Start Aborted__", |
| | | transportLogic; |
| | | |
| | | signalR.transports = {}; |
| | | |
| | | function beat(connection) { |
| | | if (connection._.keepAliveData.monitoring) { |
| | | checkIfAlive(connection); |
| | | } |
| | | |
| | | // Ensure that we successfully marked active before continuing the heartbeat. |
| | | if (transportLogic.markActive(connection)) { |
| | | connection._.beatHandle = window.setTimeout(function () { |
| | | beat(connection); |
| | | }, connection._.beatInterval); |
| | | } |
| | | } |
| | | |
| | | function checkIfAlive(connection) { |
| | | var keepAliveData = connection._.keepAliveData, |
| | | timeElapsed; |
| | | |
| | | // Only check if we're connected |
| | | if (connection.state === signalR.connectionState.connected) { |
| | | timeElapsed = new Date().getTime() - connection._.lastMessageAt; |
| | | |
| | | // Check if the keep alive has completely timed out |
| | | if (timeElapsed >= keepAliveData.timeout) { |
| | | connection.log("Keep alive timed out. Notifying transport that connection has been lost."); |
| | | |
| | | // Notify transport that the connection has been lost |
| | | connection.transport.lostConnection(connection); |
| | | } else if (timeElapsed >= keepAliveData.timeoutWarning) { |
| | | // This is to assure that the user only gets a single warning |
| | | if (!keepAliveData.userNotified) { |
| | | connection.log("Keep alive has been missed, connection may be dead/slow."); |
| | | $(connection).triggerHandler(events.onConnectionSlow); |
| | | keepAliveData.userNotified = true; |
| | | } |
| | | } else { |
| | | keepAliveData.userNotified = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | function getAjaxUrl(connection, path) { |
| | | var url = connection.url + path; |
| | | |
| | | if (connection.transport) { |
| | | url += "?transport=" + connection.transport.name; |
| | | } |
| | | |
| | | return transportLogic.prepareQueryString(connection, url); |
| | | } |
| | | |
| | | function InitHandler(connection) { |
| | | this.connection = connection; |
| | | |
| | | this.startRequested = false; |
| | | this.startCompleted = false; |
| | | this.connectionStopped = false; |
| | | } |
| | | |
| | | InitHandler.prototype = { |
| | | start: function (transport, onSuccess, onFallback) { |
| | | var that = this, |
| | | connection = that.connection, |
| | | failCalled = false; |
| | | |
| | | if (that.startRequested || that.connectionStopped) { |
| | | connection.log("WARNING! " + transport.name + " transport cannot be started. Initialization ongoing or completed."); |
| | | return; |
| | | } |
| | | |
| | | connection.log(transport.name + " transport starting."); |
| | | |
| | | transport.start(connection, function () { |
| | | if (!failCalled) { |
| | | that.initReceived(transport, onSuccess); |
| | | } |
| | | }, function (error) { |
| | | // Don't allow the same transport to cause onFallback to be called twice |
| | | if (!failCalled) { |
| | | failCalled = true; |
| | | that.transportFailed(transport, error, onFallback); |
| | | } |
| | | |
| | | // Returns true if the transport should stop; |
| | | // false if it should attempt to reconnect |
| | | return !that.startCompleted || that.connectionStopped; |
| | | }); |
| | | |
| | | that.transportTimeoutHandle = window.setTimeout(function () { |
| | | if (!failCalled) { |
| | | failCalled = true; |
| | | connection.log(transport.name + " transport timed out when trying to connect."); |
| | | that.transportFailed(transport, undefined, onFallback); |
| | | } |
| | | }, connection._.totalTransportConnectTimeout); |
| | | }, |
| | | |
| | | stop: function () { |
| | | this.connectionStopped = true; |
| | | window.clearTimeout(this.transportTimeoutHandle); |
| | | signalR.transports._logic.tryAbortStartRequest(this.connection); |
| | | }, |
| | | |
| | | initReceived: function (transport, onSuccess) { |
| | | var that = this, |
| | | connection = that.connection; |
| | | |
| | | if (that.startRequested) { |
| | | connection.log("WARNING! The client received multiple init messages."); |
| | | return; |
| | | } |
| | | |
| | | if (that.connectionStopped) { |
| | | return; |
| | | } |
| | | |
| | | that.startRequested = true; |
| | | window.clearTimeout(that.transportTimeoutHandle); |
| | | |
| | | connection.log(transport.name + " transport connected. Initiating start request."); |
| | | signalR.transports._logic.ajaxStart(connection, function () { |
| | | that.startCompleted = true; |
| | | onSuccess(); |
| | | }); |
| | | }, |
| | | |
| | | transportFailed: function (transport, error, onFallback) { |
| | | var connection = this.connection, |
| | | deferred = connection._deferral, |
| | | wrappedError; |
| | | |
| | | if (this.connectionStopped) { |
| | | return; |
| | | } |
| | | |
| | | window.clearTimeout(this.transportTimeoutHandle); |
| | | |
| | | if (!this.startRequested) { |
| | | transport.stop(connection); |
| | | |
| | | connection.log(transport.name + " transport failed to connect. Attempting to fall back."); |
| | | onFallback(); |
| | | } else if (!this.startCompleted) { |
| | | // Do not attempt to fall back if a start request is ongoing during a transport failure. |
| | | // Instead, trigger an error and stop the connection. |
| | | wrappedError = signalR._.error(signalR.resources.errorDuringStartRequest, error); |
| | | |
| | | connection.log(transport.name + " transport failed during the start request. Stopping the connection."); |
| | | $(connection).triggerHandler(events.onError, [wrappedError]); |
| | | if (deferred) { |
| | | deferred.reject(wrappedError); |
| | | } |
| | | |
| | | connection.stop(); |
| | | } else { |
| | | // The start request has completed, but the connection has not stopped. |
| | | // No need to do anything here. The transport should attempt its normal reconnect logic. |
| | | } |
| | | } |
| | | }; |
| | | |
| | | transportLogic = signalR.transports._logic = { |
| | | ajax: function (connection, options) { |
| | | return $.ajax( |
| | | $.extend(/*deep copy*/ true, {}, $.signalR.ajaxDefaults, { |
| | | type: "GET", |
| | | data: {}, |
| | | xhrFields: { withCredentials: connection.withCredentials }, |
| | | contentType: connection.contentType, |
| | | dataType: connection.ajaxDataType |
| | | }, options)); |
| | | }, |
| | | |
| | | pingServer: function (connection) { |
| | | /// <summary>Pings the server</summary> |
| | | /// <param name="connection" type="signalr">Connection associated with the server ping</param> |
| | | /// <returns type="signalR" /> |
| | | var url, |
| | | xhr, |
| | | deferral = $.Deferred(); |
| | | |
| | | if (connection.transport) { |
| | | url = connection.url + "/ping"; |
| | | |
| | | url = transportLogic.addQs(url, connection.qs); |
| | | |
| | | xhr = transportLogic.ajax(connection, { |
| | | url: url, |
| | | success: function (result) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.pingServerFailedParse, |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | if (data.Response === "pong") { |
| | | deferral.resolve(); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR._.format(signalR.resources.pingServerFailedInvalidResponse, result), |
| | | connection.transport, |
| | | null /* error */, |
| | | xhr |
| | | ) |
| | | ); |
| | | } |
| | | }, |
| | | error: function (error) { |
| | | if (error.status === 401 || error.status === 403) { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR._.format(signalR.resources.pingServerFailedStatusCode, error.status), |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | connection.stop(); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.pingServerFailed, |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.noConnectionTransport, |
| | | connection.transport |
| | | ) |
| | | ); |
| | | } |
| | | |
| | | return deferral.promise(); |
| | | }, |
| | | |
| | | prepareQueryString: function (connection, url) { |
| | | var preparedUrl; |
| | | |
| | | // Use addQs to start since it handles the ?/& prefix for us |
| | | preparedUrl = transportLogic.addQs(url, "clientProtocol=" + connection.clientProtocol); |
| | | |
| | | // Add the user-specified query string params if any |
| | | preparedUrl = transportLogic.addQs(preparedUrl, connection.qs); |
| | | |
| | | if (connection.token) { |
| | | preparedUrl += "&connectionToken=" + window.encodeURIComponent(connection.token); |
| | | } |
| | | |
| | | if (connection.data) { |
| | | preparedUrl += "&connectionData=" + window.encodeURIComponent(connection.data); |
| | | } |
| | | |
| | | return preparedUrl; |
| | | }, |
| | | |
| | | addQs: function (url, qs) { |
| | | var appender = url.indexOf("?") !== -1 ? "&" : "?", |
| | | firstChar; |
| | | |
| | | if (!qs) { |
| | | return url; |
| | | } |
| | | |
| | | if (typeof (qs) === "object") { |
| | | return url + appender + $.param(qs); |
| | | } |
| | | |
| | | if (typeof (qs) === "string") { |
| | | firstChar = qs.charAt(0); |
| | | |
| | | if (firstChar === "?" || firstChar === "&") { |
| | | appender = ""; |
| | | } |
| | | |
| | | return url + appender + qs; |
| | | } |
| | | |
| | | throw new Error("Query string property must be either a string or object."); |
| | | }, |
| | | |
| | | // BUG #2953: The url needs to be same otherwise it will cause a memory leak |
| | | getUrl: function (connection, transport, reconnecting, poll, ajaxPost) { |
| | | /// <summary>Gets the url for making a GET based connect request</summary> |
| | | var baseUrl = transport === "webSockets" ? "" : connection.baseUrl, |
| | | url = baseUrl + connection.appRelativeUrl, |
| | | qs = "transport=" + transport; |
| | | |
| | | if (!ajaxPost && connection.groupsToken) { |
| | | qs += "&groupsToken=" + window.encodeURIComponent(connection.groupsToken); |
| | | } |
| | | |
| | | if (!reconnecting) { |
| | | url += "/connect"; |
| | | } else { |
| | | if (poll) { |
| | | // longPolling transport specific |
| | | url += "/poll"; |
| | | } else { |
| | | url += "/reconnect"; |
| | | } |
| | | |
| | | if (!ajaxPost && connection.messageId) { |
| | | qs += "&messageId=" + window.encodeURIComponent(connection.messageId); |
| | | } |
| | | } |
| | | url += "?" + qs; |
| | | url = transportLogic.prepareQueryString(connection, url); |
| | | |
| | | if (!ajaxPost) { |
| | | url += "&tid=" + Math.floor(Math.random() * 11); |
| | | } |
| | | |
| | | return url; |
| | | }, |
| | | |
| | | maximizePersistentResponse: function (minPersistentResponse) { |
| | | return { |
| | | MessageId: minPersistentResponse.C, |
| | | Messages: minPersistentResponse.M, |
| | | Initialized: typeof (minPersistentResponse.S) !== "undefined" ? true : false, |
| | | ShouldReconnect: typeof (minPersistentResponse.T) !== "undefined" ? true : false, |
| | | LongPollDelay: minPersistentResponse.L, |
| | | GroupsToken: minPersistentResponse.G |
| | | }; |
| | | }, |
| | | |
| | | updateGroups: function (connection, groupsToken) { |
| | | if (groupsToken) { |
| | | connection.groupsToken = groupsToken; |
| | | } |
| | | }, |
| | | |
| | | stringifySend: function (connection, message) { |
| | | if (typeof (message) === "string" || typeof (message) === "undefined" || message === null) { |
| | | return message; |
| | | } |
| | | return connection.json.stringify(message); |
| | | }, |
| | | |
| | | ajaxSend: function (connection, data) { |
| | | var payload = transportLogic.stringifySend(connection, data), |
| | | url = getAjaxUrl(connection, "/send"), |
| | | xhr, |
| | | onFail = function (error, connection) { |
| | | $(connection).triggerHandler(events.onError, [signalR._.transportError(signalR.resources.sendFailed, connection.transport, error, xhr), data]); |
| | | }; |
| | | |
| | | |
| | | xhr = transportLogic.ajax(connection, { |
| | | url: url, |
| | | type: connection.ajaxDataType === "jsonp" ? "GET" : "POST", |
| | | contentType: signalR._.defaultContentType, |
| | | data: { |
| | | data: payload |
| | | }, |
| | | success: function (result) { |
| | | var res; |
| | | |
| | | if (result) { |
| | | try { |
| | | res = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | onFail(error, connection); |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | transportLogic.triggerReceived(connection, res); |
| | | } |
| | | }, |
| | | error: function (error, textStatus) { |
| | | if (textStatus === "abort" || textStatus === "parsererror") { |
| | | // The parsererror happens for sends that don't return any data, and hence |
| | | // don't write the jsonp callback to the response. This is harder to fix on the server |
| | | // so just hack around it on the client for now. |
| | | return; |
| | | } |
| | | |
| | | onFail(error, connection); |
| | | } |
| | | }); |
| | | |
| | | return xhr; |
| | | }, |
| | | |
| | | ajaxAbort: function (connection, async) { |
| | | if (typeof (connection.transport) === "undefined") { |
| | | return; |
| | | } |
| | | |
| | | // Async by default unless explicitly overidden |
| | | async = typeof async === "undefined" ? true : async; |
| | | |
| | | var url = getAjaxUrl(connection, "/abort"); |
| | | |
| | | transportLogic.ajax(connection, { |
| | | url: url, |
| | | async: async, |
| | | timeout: 1000, |
| | | type: "POST" |
| | | }); |
| | | |
| | | connection.log("Fired ajax abort async = " + async + "."); |
| | | }, |
| | | |
| | | ajaxStart: function (connection, onSuccess) { |
| | | var rejectDeferred = function (error) { |
| | | var deferred = connection._deferral; |
| | | if (deferred) { |
| | | deferred.reject(error); |
| | | } |
| | | }, |
| | | triggerStartError = function (error) { |
| | | connection.log("The start request failed. Stopping the connection."); |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | rejectDeferred(error); |
| | | connection.stop(); |
| | | }; |
| | | |
| | | connection._.startRequest = transportLogic.ajax(connection, { |
| | | url: getAjaxUrl(connection, "/start"), |
| | | success: function (result, statusText, xhr) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(result); |
| | | } catch (error) { |
| | | triggerStartError(signalR._.error( |
| | | signalR._.format(signalR.resources.errorParsingStartResponse, result), |
| | | error, xhr)); |
| | | return; |
| | | } |
| | | |
| | | if (data.Response === "started") { |
| | | onSuccess(); |
| | | } else { |
| | | triggerStartError(signalR._.error( |
| | | signalR._.format(signalR.resources.invalidStartResponse, result), |
| | | null /* error */, xhr)); |
| | | } |
| | | }, |
| | | error: function (xhr, statusText, error) { |
| | | if (statusText !== startAbortText) { |
| | | triggerStartError(signalR._.error( |
| | | signalR.resources.errorDuringStartRequest, |
| | | error, xhr)); |
| | | } else { |
| | | // Stop has been called, no need to trigger the error handler |
| | | // or stop the connection again with onStartError |
| | | connection.log("The start request aborted because connection.stop() was called."); |
| | | rejectDeferred(signalR._.error( |
| | | signalR.resources.stoppedDuringStartRequest, |
| | | null /* error */, xhr)); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | tryAbortStartRequest: function (connection) { |
| | | if (connection._.startRequest) { |
| | | // If the start request has already completed this will noop. |
| | | connection._.startRequest.abort(startAbortText); |
| | | delete connection._.startRequest; |
| | | } |
| | | }, |
| | | |
| | | tryInitialize: function (connection, persistentResponse, onInitialized) { |
| | | if (persistentResponse.Initialized && onInitialized) { |
| | | onInitialized(); |
| | | } else if (persistentResponse.Initialized) { |
| | | connection.log("WARNING! The client received an init message after reconnecting."); |
| | | } |
| | | |
| | | }, |
| | | |
| | | triggerReceived: function (connection, data) { |
| | | if (!connection._.connectingMessageBuffer.tryBuffer(data)) { |
| | | $(connection).triggerHandler(events.onReceived, [data]); |
| | | } |
| | | }, |
| | | |
| | | processMessages: function (connection, minData, onInitialized) { |
| | | var data; |
| | | |
| | | // Update the last message time stamp |
| | | transportLogic.markLastMessage(connection); |
| | | |
| | | if (minData) { |
| | | data = transportLogic.maximizePersistentResponse(minData); |
| | | |
| | | transportLogic.updateGroups(connection, data.GroupsToken); |
| | | |
| | | if (data.MessageId) { |
| | | connection.messageId = data.MessageId; |
| | | } |
| | | |
| | | if (data.Messages) { |
| | | $.each(data.Messages, function (index, message) { |
| | | transportLogic.triggerReceived(connection, message); |
| | | }); |
| | | |
| | | transportLogic.tryInitialize(connection, data, onInitialized); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | monitorKeepAlive: function (connection) { |
| | | var keepAliveData = connection._.keepAliveData; |
| | | |
| | | // If we haven't initiated the keep alive timeouts then we need to |
| | | if (!keepAliveData.monitoring) { |
| | | keepAliveData.monitoring = true; |
| | | |
| | | transportLogic.markLastMessage(connection); |
| | | |
| | | // Save the function so we can unbind it on stop |
| | | connection._.keepAliveData.reconnectKeepAliveUpdate = function () { |
| | | // Mark a new message so that keep alive doesn't time out connections |
| | | transportLogic.markLastMessage(connection); |
| | | }; |
| | | |
| | | // Update Keep alive on reconnect |
| | | $(connection).bind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate); |
| | | |
| | | connection.log("Now monitoring keep alive with a warning timeout of " + keepAliveData.timeoutWarning + ", keep alive timeout of " + keepAliveData.timeout + " and disconnecting timeout of " + connection.disconnectTimeout); |
| | | } else { |
| | | connection.log("Tried to monitor keep alive but it's already being monitored."); |
| | | } |
| | | }, |
| | | |
| | | stopMonitoringKeepAlive: function (connection) { |
| | | var keepAliveData = connection._.keepAliveData; |
| | | |
| | | // Only attempt to stop the keep alive monitoring if its being monitored |
| | | if (keepAliveData.monitoring) { |
| | | // Stop monitoring |
| | | keepAliveData.monitoring = false; |
| | | |
| | | // Remove the updateKeepAlive function from the reconnect event |
| | | $(connection).unbind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate); |
| | | |
| | | // Clear all the keep alive data |
| | | connection._.keepAliveData = {}; |
| | | connection.log("Stopping the monitoring of the keep alive."); |
| | | } |
| | | }, |
| | | |
| | | startHeartbeat: function (connection) { |
| | | connection._.lastActiveAt = new Date().getTime(); |
| | | beat(connection); |
| | | }, |
| | | |
| | | markLastMessage: function (connection) { |
| | | connection._.lastMessageAt = new Date().getTime(); |
| | | }, |
| | | |
| | | markActive: function (connection) { |
| | | if (transportLogic.verifyLastActive(connection)) { |
| | | connection._.lastActiveAt = new Date().getTime(); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | |
| | | isConnectedOrReconnecting: function (connection) { |
| | | return connection.state === signalR.connectionState.connected || |
| | | connection.state === signalR.connectionState.reconnecting; |
| | | }, |
| | | |
| | | ensureReconnectingState: function (connection) { |
| | | if (changeState(connection, |
| | | signalR.connectionState.connected, |
| | | signalR.connectionState.reconnecting) === true) { |
| | | $(connection).triggerHandler(events.onReconnecting); |
| | | } |
| | | return connection.state === signalR.connectionState.reconnecting; |
| | | }, |
| | | |
| | | clearReconnectTimeout: function (connection) { |
| | | if (connection && connection._.reconnectTimeout) { |
| | | window.clearTimeout(connection._.reconnectTimeout); |
| | | delete connection._.reconnectTimeout; |
| | | } |
| | | }, |
| | | |
| | | verifyLastActive: function (connection) { |
| | | if (new Date().getTime() - connection._.lastActiveAt >= connection.reconnectWindow) { |
| | | var message = signalR._.format(signalR.resources.reconnectWindowTimeout, new Date(connection._.lastActiveAt), connection.reconnectWindow); |
| | | connection.log(message); |
| | | $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ "TimeoutException")]); |
| | | connection.stop(/* async */ false, /* notifyServer */ false); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | }, |
| | | |
| | | reconnect: function (connection, transportName) { |
| | | var transport = signalR.transports[transportName]; |
| | | |
| | | // We should only set a reconnectTimeout if we are currently connected |
| | | // and a reconnectTimeout isn't already set. |
| | | if (transportLogic.isConnectedOrReconnecting(connection) && !connection._.reconnectTimeout) { |
| | | // Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration. |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | connection._.reconnectTimeout = window.setTimeout(function () { |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | transport.stop(connection); |
| | | |
| | | if (transportLogic.ensureReconnectingState(connection)) { |
| | | connection.log(transportName + " reconnecting."); |
| | | transport.start(connection); |
| | | } |
| | | }, connection.reconnectDelay); |
| | | } |
| | | }, |
| | | |
| | | handleParseFailure: function (connection, result, error, onFailed, context) { |
| | | var wrappedError = signalR._.transportError( |
| | | signalR._.format(signalR.resources.parseFailed, result), |
| | | connection.transport, |
| | | error, |
| | | context); |
| | | |
| | | // If we're in the initialization phase trigger onFailed, otherwise stop the connection. |
| | | if (onFailed && onFailed(wrappedError)) { |
| | | connection.log("Failed to parse server response while attempting to connect."); |
| | | } else { |
| | | $(connection).triggerHandler(events.onError, [wrappedError]); |
| | | connection.stop(); |
| | | } |
| | | }, |
| | | |
| | | initHandler: function (connection) { |
| | | return new InitHandler(connection); |
| | | }, |
| | | |
| | | foreverFrame: { |
| | | count: 0, |
| | | connections: {} |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.webSockets.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic; |
| | | |
| | | signalR.transports.webSockets = { |
| | | name: "webSockets", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | var payload = transportLogic.stringifySend(connection, data); |
| | | |
| | | try { |
| | | connection.socket.send(payload); |
| | | } catch (ex) { |
| | | $(connection).triggerHandler(events.onError, |
| | | [signalR._.transportError( |
| | | signalR.resources.webSocketsInvalidState, |
| | | connection.transport, |
| | | ex, |
| | | connection.socket |
| | | ), |
| | | data]); |
| | | } |
| | | }, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var url, |
| | | opened = false, |
| | | that = this, |
| | | reconnecting = !onSuccess, |
| | | $connection = $(connection); |
| | | |
| | | if (!window.WebSocket) { |
| | | onFailed(); |
| | | return; |
| | | } |
| | | |
| | | if (!connection.socket) { |
| | | if (connection.webSocketServerUrl) { |
| | | url = connection.webSocketServerUrl; |
| | | } else { |
| | | url = connection.wsProtocol + connection.host; |
| | | } |
| | | |
| | | url += transportLogic.getUrl(connection, this.name, reconnecting); |
| | | |
| | | connection.log("Connecting to websocket endpoint '" + url + "'."); |
| | | connection.socket = new window.WebSocket(url); |
| | | |
| | | connection.socket.onopen = function () { |
| | | opened = true; |
| | | connection.log("Websocket opened."); |
| | | |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | $connection.triggerHandler(events.onReconnect); |
| | | } |
| | | }; |
| | | |
| | | connection.socket.onclose = function (event) { |
| | | var error; |
| | | |
| | | // Only handle a socket close if the close is from the current socket. |
| | | // Sometimes on disconnect the server will push down an onclose event |
| | | // to an expired socket. |
| | | |
| | | if (this === connection.socket) { |
| | | if (opened && typeof event.wasClean !== "undefined" && event.wasClean === false) { |
| | | // Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but |
| | | // I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers. |
| | | error = signalR._.transportError( |
| | | signalR.resources.webSocketClosed, |
| | | connection.transport, |
| | | event); |
| | | |
| | | connection.log("Unclean disconnect from websocket: " + (event.reason || "[no reason given].")); |
| | | } else { |
| | | connection.log("Websocket closed."); |
| | | } |
| | | |
| | | if (!onFailed || !onFailed(error)) { |
| | | if (error) { |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | } |
| | | |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | connection.socket.onmessage = function (event) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(event.data); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(connection, event.data, error, onFailed, event); |
| | | return; |
| | | } |
| | | |
| | | if (data) { |
| | | // data.M is PersistentResponse.Messages |
| | | if ($.isEmptyObject(data) || data.M) { |
| | | transportLogic.processMessages(connection, data, onSuccess); |
| | | } else { |
| | | // For websockets we need to trigger onReceived |
| | | // for callbacks to outgoing hub calls. |
| | | transportLogic.triggerReceived(connection, data); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | transportLogic.reconnect(connection, this.name); |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | // Don't trigger a reconnect after stopping |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (connection.socket) { |
| | | connection.log("Closing the Websocket."); |
| | | connection.socket.close(); |
| | | connection.socket = null; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.serverSentEvents.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic, |
| | | clearReconnectAttemptTimeout = function (connection) { |
| | | window.clearTimeout(connection._.reconnectAttemptTimeoutHandle); |
| | | delete connection._.reconnectAttemptTimeoutHandle; |
| | | }; |
| | | |
| | | signalR.transports.serverSentEvents = { |
| | | name: "serverSentEvents", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | timeOut: 3000, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var that = this, |
| | | opened = false, |
| | | $connection = $(connection), |
| | | reconnecting = !onSuccess, |
| | | url; |
| | | |
| | | if (connection.eventSource) { |
| | | connection.log("The connection already has an event source. Stopping it."); |
| | | connection.stop(); |
| | | } |
| | | |
| | | if (!window.EventSource) { |
| | | if (onFailed) { |
| | | connection.log("This browser doesn't support SSE."); |
| | | onFailed(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | url = transportLogic.getUrl(connection, this.name, reconnecting); |
| | | |
| | | try { |
| | | connection.log("Attempting to connect to SSE endpoint '" + url + "'."); |
| | | connection.eventSource = new window.EventSource(url, { withCredentials: connection.withCredentials }); |
| | | } |
| | | catch (e) { |
| | | connection.log("EventSource failed trying to connect with error " + e.Message + "."); |
| | | if (onFailed) { |
| | | // The connection failed, call the failed callback |
| | | onFailed(); |
| | | } else { |
| | | $connection.triggerHandler(events.onError, [signalR._.transportError(signalR.resources.eventSourceFailedToConnect, connection.transport, e)]); |
| | | if (reconnecting) { |
| | | // If we were reconnecting, rather than doing initial connect, then try reconnect again |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | |
| | | if (reconnecting) { |
| | | connection._.reconnectAttemptTimeoutHandle = window.setTimeout(function () { |
| | | if (opened === false) { |
| | | // If we're reconnecting and the event source is attempting to connect, |
| | | // don't keep retrying. This causes duplicate connections to spawn. |
| | | if (connection.eventSource.readyState !== window.EventSource.OPEN) { |
| | | // If we were reconnecting, rather than doing initial connect, then try reconnect again |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | }, |
| | | that.timeOut); |
| | | } |
| | | |
| | | connection.eventSource.addEventListener("open", function (e) { |
| | | connection.log("EventSource connected."); |
| | | |
| | | clearReconnectAttemptTimeout(connection); |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (opened === false) { |
| | | opened = true; |
| | | |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | $connection.triggerHandler(events.onReconnect); |
| | | } |
| | | } |
| | | }, false); |
| | | |
| | | connection.eventSource.addEventListener("message", function (e) { |
| | | var res; |
| | | |
| | | // process messages |
| | | if (e.data === "initialized") { |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | res = connection._parseResponse(e.data); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(connection, e.data, error, onFailed, e); |
| | | return; |
| | | } |
| | | |
| | | transportLogic.processMessages(connection, res, onSuccess); |
| | | }, false); |
| | | |
| | | connection.eventSource.addEventListener("error", function (e) { |
| | | var error = signalR._.transportError( |
| | | signalR.resources.eventSourceError, |
| | | connection.transport, |
| | | e); |
| | | |
| | | // Only handle an error if the error is from the current Event Source. |
| | | // Sometimes on disconnect the server will push down an error event |
| | | // to an expired Event Source. |
| | | if (this !== connection.eventSource) { |
| | | return; |
| | | } |
| | | |
| | | if (onFailed && onFailed(error)) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("EventSource readyState: " + connection.eventSource.readyState + "."); |
| | | |
| | | if (e.eventPhase === window.EventSource.CLOSED) { |
| | | // We don't use the EventSource's native reconnect function as it |
| | | // doesn't allow us to change the URL when reconnecting. We need |
| | | // to change the URL to not include the /connect suffix, and pass |
| | | // the last message id we received. |
| | | connection.log("EventSource reconnecting due to the server connection ending."); |
| | | that.reconnect(connection); |
| | | } else { |
| | | // connection error |
| | | connection.log("EventSource error."); |
| | | $connection.triggerHandler(events.onError, [error]); |
| | | } |
| | | }, false); |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | transportLogic.reconnect(connection, this.name); |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | // Don't trigger a reconnect after stopping |
| | | clearReconnectAttemptTimeout(connection); |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (connection && connection.eventSource) { |
| | | connection.log("EventSource calling close()."); |
| | | connection.eventSource.close(); |
| | | connection.eventSource = null; |
| | | delete connection.eventSource; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.foreverFrame.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic, |
| | | createFrame = function () { |
| | | var frame = window.document.createElement("iframe"); |
| | | frame.setAttribute("style", "position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"); |
| | | return frame; |
| | | }, |
| | | // Used to prevent infinite loading icon spins in older versions of ie |
| | | // We build this object inside a closure so we don't pollute the rest of |
| | | // the foreverFrame transport with unnecessary functions/utilities. |
| | | loadPreventer = (function () { |
| | | var loadingFixIntervalId = null, |
| | | loadingFixInterval = 1000, |
| | | attachedTo = 0; |
| | | |
| | | return { |
| | | prevent: function () { |
| | | // Prevent additional iframe removal procedures from newer browsers |
| | | if (signalR._.ieVersion <= 8) { |
| | | // We only ever want to set the interval one time, so on the first attachedTo |
| | | if (attachedTo === 0) { |
| | | // Create and destroy iframe every 3 seconds to prevent loading icon, super hacky |
| | | loadingFixIntervalId = window.setInterval(function () { |
| | | var tempFrame = createFrame(); |
| | | |
| | | window.document.body.appendChild(tempFrame); |
| | | window.document.body.removeChild(tempFrame); |
| | | |
| | | tempFrame = null; |
| | | }, loadingFixInterval); |
| | | } |
| | | |
| | | attachedTo++; |
| | | } |
| | | }, |
| | | cancel: function () { |
| | | // Only clear the interval if there's only one more object that the loadPreventer is attachedTo |
| | | if (attachedTo === 1) { |
| | | window.clearInterval(loadingFixIntervalId); |
| | | } |
| | | |
| | | if (attachedTo > 0) { |
| | | attachedTo--; |
| | | } |
| | | } |
| | | }; |
| | | })(); |
| | | |
| | | signalR.transports.foreverFrame = { |
| | | name: "foreverFrame", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | // Added as a value here so we can create tests to verify functionality |
| | | iframeClearThreshold: 50, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var that = this, |
| | | frameId = (transportLogic.foreverFrame.count += 1), |
| | | url, |
| | | frame = createFrame(), |
| | | frameLoadHandler = function () { |
| | | connection.log("Forever frame iframe finished loading and is no longer receiving messages."); |
| | | if (!onFailed || !onFailed()) { |
| | | that.reconnect(connection); |
| | | } |
| | | }; |
| | | |
| | | if (window.EventSource) { |
| | | // If the browser supports SSE, don't use Forever Frame |
| | | if (onFailed) { |
| | | connection.log("Forever Frame is not supported by SignalR on browsers with SSE support."); |
| | | onFailed(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | frame.setAttribute("data-signalr-connection-id", connection.id); |
| | | |
| | | // Start preventing loading icon |
| | | // This will only perform work if the loadPreventer is not attached to another connection. |
| | | loadPreventer.prevent(); |
| | | |
| | | // Build the url |
| | | url = transportLogic.getUrl(connection, this.name); |
| | | url += "&frameId=" + frameId; |
| | | |
| | | // add frame to the document prior to setting URL to avoid caching issues. |
| | | window.document.documentElement.appendChild(frame); |
| | | |
| | | connection.log("Binding to iframe's load event."); |
| | | |
| | | if (frame.addEventListener) { |
| | | frame.addEventListener("load", frameLoadHandler, false); |
| | | } else if (frame.attachEvent) { |
| | | frame.attachEvent("onload", frameLoadHandler); |
| | | } |
| | | |
| | | frame.src = url; |
| | | transportLogic.foreverFrame.connections[frameId] = connection; |
| | | |
| | | connection.frame = frame; |
| | | connection.frameId = frameId; |
| | | |
| | | if (onSuccess) { |
| | | connection.onSuccess = function () { |
| | | connection.log("Iframe transport started."); |
| | | onSuccess(); |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | var that = this; |
| | | |
| | | // Need to verify connection state and verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration. |
| | | if (transportLogic.isConnectedOrReconnecting(connection) && transportLogic.verifyLastActive(connection)) { |
| | | window.setTimeout(function () { |
| | | // Verify that we're ok to reconnect. |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | if (connection.frame && transportLogic.ensureReconnectingState(connection)) { |
| | | var frame = connection.frame, |
| | | src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId; |
| | | connection.log("Updating iframe src to '" + src + "'."); |
| | | frame.src = src; |
| | | } |
| | | }, connection.reconnectDelay); |
| | | } |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | receive: function (connection, data) { |
| | | var cw, |
| | | body, |
| | | response; |
| | | |
| | | if (connection.json !== connection._originalJson) { |
| | | // If there's a custom JSON parser configured then serialize the object |
| | | // using the original (browser) JSON parser and then deserialize it using |
| | | // the custom parser (connection._parseResponse does that). This is so we |
| | | // can easily send the response from the server as "raw" JSON but still |
| | | // support custom JSON deserialization in the browser. |
| | | data = connection._originalJson.stringify(data); |
| | | } |
| | | |
| | | response = connection._parseResponse(data); |
| | | |
| | | transportLogic.processMessages(connection, response, connection.onSuccess); |
| | | |
| | | // Protect against connection stopping from a callback trigger within the processMessages above. |
| | | if (connection.state === $.signalR.connectionState.connected) { |
| | | // Delete the script & div elements |
| | | connection.frameMessageCount = (connection.frameMessageCount || 0) + 1; |
| | | if (connection.frameMessageCount > signalR.transports.foreverFrame.iframeClearThreshold) { |
| | | connection.frameMessageCount = 0; |
| | | cw = connection.frame.contentWindow || connection.frame.contentDocument; |
| | | if (cw && cw.document && cw.document.body) { |
| | | body = cw.document.body; |
| | | |
| | | // Remove all the child elements from the iframe's body to conserver memory |
| | | while (body.firstChild) { |
| | | body.removeChild(body.firstChild); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | var cw = null; |
| | | |
| | | // Stop attempting to prevent loading icon |
| | | loadPreventer.cancel(); |
| | | |
| | | if (connection.frame) { |
| | | if (connection.frame.stop) { |
| | | connection.frame.stop(); |
| | | } else { |
| | | try { |
| | | cw = connection.frame.contentWindow || connection.frame.contentDocument; |
| | | if (cw.document && cw.document.execCommand) { |
| | | cw.document.execCommand("Stop"); |
| | | } |
| | | } |
| | | catch (e) { |
| | | connection.log("Error occurred when stopping foreverFrame transport. Message = " + e.message + "."); |
| | | } |
| | | } |
| | | |
| | | // Ensure the iframe is where we left it |
| | | if (connection.frame.parentNode === window.document.documentElement) { |
| | | window.document.documentElement.removeChild(connection.frame); |
| | | } |
| | | |
| | | delete transportLogic.foreverFrame.connections[connection.frameId]; |
| | | connection.frame = null; |
| | | connection.frameId = null; |
| | | delete connection.frame; |
| | | delete connection.frameId; |
| | | delete connection.onSuccess; |
| | | delete connection.frameMessageCount; |
| | | connection.log("Stopping forever frame."); |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | }, |
| | | |
| | | getConnection: function (id) { |
| | | return transportLogic.foreverFrame.connections[id]; |
| | | }, |
| | | |
| | | started: function (connection) { |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | |
| | | $(connection).triggerHandler(events.onReconnect); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.longPolling.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | isDisconnecting = $.signalR.isDisconnecting, |
| | | transportLogic = signalR.transports._logic; |
| | | |
| | | signalR.transports.longPolling = { |
| | | name: "longPolling", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return false; |
| | | }, |
| | | |
| | | reconnectDelay: 3000, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | /// <summary>Starts the long polling connection</summary> |
| | | /// <param name="connection" type="signalR">The SignalR connection to start</param> |
| | | var that = this, |
| | | fireConnect = function () { |
| | | fireConnect = $.noop; |
| | | |
| | | connection.log("LongPolling connected."); |
| | | |
| | | if (onSuccess) { |
| | | onSuccess(); |
| | | } else { |
| | | connection.log("WARNING! The client received an init message after reconnecting."); |
| | | } |
| | | }, |
| | | tryFailConnect = function (error) { |
| | | if (onFailed(error)) { |
| | | connection.log("LongPolling failed to connect."); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | privateData = connection._, |
| | | reconnectErrors = 0, |
| | | fireReconnected = function (instance) { |
| | | window.clearTimeout(privateData.reconnectTimeoutId); |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | if (changeState(instance, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | // Successfully reconnected! |
| | | instance.log("Raising the reconnect event"); |
| | | $(instance).triggerHandler(events.onReconnect); |
| | | } |
| | | }, |
| | | // 1 hour |
| | | maxFireReconnectedTimeout = 3600000; |
| | | |
| | | if (connection.pollXhr) { |
| | | connection.log("Polling xhr requests already exists, aborting."); |
| | | connection.stop(); |
| | | } |
| | | |
| | | connection.messageId = null; |
| | | |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | (function poll(instance, raiseReconnect) { |
| | | var messageId = instance.messageId, |
| | | connect = (messageId === null), |
| | | reconnecting = !connect, |
| | | polling = !raiseReconnect, |
| | | url = transportLogic.getUrl(instance, that.name, reconnecting, polling, true /* use Post for longPolling */), |
| | | postData = {}; |
| | | |
| | | if (instance.messageId) { |
| | | postData.messageId = instance.messageId; |
| | | } |
| | | |
| | | if (instance.groupsToken) { |
| | | postData.groupsToken = instance.groupsToken; |
| | | } |
| | | |
| | | // If we've disconnected during the time we've tried to re-instantiate the poll then stop. |
| | | if (isDisconnecting(instance) === true) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("Opening long polling request to '" + url + "'."); |
| | | instance.pollXhr = transportLogic.ajax(connection, { |
| | | xhrFields: { |
| | | onprogress: function () { |
| | | transportLogic.markLastMessage(connection); |
| | | } |
| | | }, |
| | | url: url, |
| | | type: "POST", |
| | | contentType: signalR._.defaultContentType, |
| | | data: postData, |
| | | timeout: connection._.pollTimeout, |
| | | success: function (result) { |
| | | var minData, |
| | | delay = 0, |
| | | data, |
| | | shouldReconnect; |
| | | |
| | | connection.log("Long poll complete."); |
| | | |
| | | // Reset our reconnect errors so if we transition into a reconnecting state again we trigger |
| | | // reconnected quickly |
| | | reconnectErrors = 0; |
| | | |
| | | try { |
| | | // Remove any keep-alives from the beginning of the result |
| | | minData = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(instance, result, error, tryFailConnect, instance.pollXhr); |
| | | return; |
| | | } |
| | | |
| | | // If there's currently a timeout to trigger reconnect, fire it now before processing messages |
| | | if (privateData.reconnectTimeoutId !== null) { |
| | | fireReconnected(instance); |
| | | } |
| | | |
| | | if (minData) { |
| | | data = transportLogic.maximizePersistentResponse(minData); |
| | | } |
| | | |
| | | transportLogic.processMessages(instance, minData, fireConnect); |
| | | |
| | | if (data && |
| | | $.type(data.LongPollDelay) === "number") { |
| | | delay = data.LongPollDelay; |
| | | } |
| | | |
| | | if (isDisconnecting(instance) === true) { |
| | | return; |
| | | } |
| | | |
| | | shouldReconnect = data && data.ShouldReconnect; |
| | | if (shouldReconnect) { |
| | | // Transition into the reconnecting state |
| | | // If this fails then that means that the user transitioned the connection into a invalid state in processMessages. |
| | | if (!transportLogic.ensureReconnectingState(instance)) { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // We never want to pass a raiseReconnect flag after a successful poll. This is handled via the error function |
| | | if (delay > 0) { |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | poll(instance, shouldReconnect); |
| | | }, delay); |
| | | } else { |
| | | poll(instance, shouldReconnect); |
| | | } |
| | | }, |
| | | |
| | | error: function (data, textStatus) { |
| | | var error = signalR._.transportError(signalR.resources.longPollFailed, connection.transport, data, instance.pollXhr); |
| | | |
| | | // Stop trying to trigger reconnect, connection is in an error state |
| | | // If we're not in the reconnect state this will noop |
| | | window.clearTimeout(privateData.reconnectTimeoutId); |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | if (textStatus === "abort") { |
| | | connection.log("Aborted xhr request."); |
| | | return; |
| | | } |
| | | |
| | | if (!tryFailConnect(error)) { |
| | | |
| | | // Increment our reconnect errors, we assume all errors to be reconnect errors |
| | | // In the case that it's our first error this will cause Reconnect to be fired |
| | | // after 1 second due to reconnectErrors being = 1. |
| | | reconnectErrors++; |
| | | |
| | | if (connection.state !== signalR.connectionState.reconnecting) { |
| | | connection.log("An error occurred using longPolling. Status = " + textStatus + ". Response = " + data.responseText + "."); |
| | | $(instance).triggerHandler(events.onError, [error]); |
| | | } |
| | | |
| | | // We check the state here to verify that we're not in an invalid state prior to verifying Reconnect. |
| | | // If we're not in connected or reconnecting then the next ensureReconnectingState check will fail and will return. |
| | | // Therefore we don't want to change that failure code path. |
| | | if ((connection.state === signalR.connectionState.connected || |
| | | connection.state === signalR.connectionState.reconnecting) && |
| | | !transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | // Transition into the reconnecting state |
| | | // If this fails then that means that the user transitioned the connection into the disconnected or connecting state within the above error handler trigger. |
| | | if (!transportLogic.ensureReconnectingState(instance)) { |
| | | return; |
| | | } |
| | | |
| | | // Call poll with the raiseReconnect flag as true after the reconnect delay |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | poll(instance, true); |
| | | }, that.reconnectDelay); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // This will only ever pass after an error has occurred via the poll ajax procedure. |
| | | if (reconnecting && raiseReconnect === true) { |
| | | // We wait to reconnect depending on how many times we've failed to reconnect. |
| | | // This is essentially a heuristic that will exponentially increase in wait time before |
| | | // triggering reconnected. This depends on the "error" handler of Poll to cancel this |
| | | // timeout if it triggers before the Reconnected event fires. |
| | | // The Math.min at the end is to ensure that the reconnect timeout does not overflow. |
| | | privateData.reconnectTimeoutId = window.setTimeout(function () { fireReconnected(instance); }, Math.min(1000 * (Math.pow(2, reconnectErrors) - 1), maxFireReconnectedTimeout)); |
| | | } |
| | | }(connection)); |
| | | }, 250); // Have to delay initial poll so Chrome doesn't show loader spinner in tab |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | if (connection.pollXhr) { |
| | | connection.pollXhr.abort("lostConnection"); |
| | | } |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | /// <summary>Stops the long polling connection</summary> |
| | | /// <param name="connection" type="signalR">The SignalR connection to stop</param> |
| | | |
| | | window.clearTimeout(connection._.pollTimeoutId); |
| | | window.clearTimeout(connection._.reconnectTimeoutId); |
| | | |
| | | delete connection._.pollTimeoutId; |
| | | delete connection._.reconnectTimeoutId; |
| | | |
| | | if (connection.pollXhr) { |
| | | connection.pollXhr.abort(); |
| | | connection.pollXhr = null; |
| | | delete connection.pollXhr; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.hubs.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var eventNamespace = ".hubProxy", |
| | | signalR = $.signalR; |
| | | |
| | | function makeEventName(event) { |
| | | return event + eventNamespace; |
| | | } |
| | | |
| | | // Equivalent to Array.prototype.map |
| | | function map(arr, fun, thisp) { |
| | | var i, |
| | | length = arr.length, |
| | | result = []; |
| | | for (i = 0; i < length; i += 1) { |
| | | if (arr.hasOwnProperty(i)) { |
| | | result[i] = fun.call(thisp, arr[i], i, arr); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | function getArgValue(a) { |
| | | return $.isFunction(a) ? null : ($.type(a) === "undefined" ? null : a); |
| | | } |
| | | |
| | | function hasMembers(obj) { |
| | | for (var key in obj) { |
| | | // If we have any properties in our callback map then we have callbacks and can exit the loop via return |
| | | if (obj.hasOwnProperty(key)) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | function clearInvocationCallbacks(connection, error) { |
| | | /// <param name="connection" type="hubConnection" /> |
| | | var callbacks = connection._.invocationCallbacks, |
| | | callback; |
| | | |
| | | if (hasMembers(callbacks)) { |
| | | connection.log("Clearing hub invocation callbacks with error: " + error + "."); |
| | | } |
| | | |
| | | // Reset the callback cache now as we have a local var referencing it |
| | | connection._.invocationCallbackId = 0; |
| | | delete connection._.invocationCallbacks; |
| | | connection._.invocationCallbacks = {}; |
| | | |
| | | // Loop over the callbacks and invoke them. |
| | | // We do this using a local var reference and *after* we've cleared the cache |
| | | // so that if a fail callback itself tries to invoke another method we don't |
| | | // end up with its callback in the list we're looping over. |
| | | for (var callbackId in callbacks) { |
| | | callback = callbacks[callbackId]; |
| | | callback.method.call(callback.scope, { E: error }); |
| | | } |
| | | } |
| | | |
| | | // hubProxy |
| | | function hubProxy(hubConnection, hubName) { |
| | | /// <summary> |
| | | /// Creates a new proxy object for the given hub connection that can be used to invoke |
| | | /// methods on server hubs and handle client method invocation requests from the server. |
| | | /// </summary> |
| | | return new hubProxy.fn.init(hubConnection, hubName); |
| | | } |
| | | |
| | | hubProxy.fn = hubProxy.prototype = { |
| | | init: function (connection, hubName) { |
| | | this.state = {}; |
| | | this.connection = connection; |
| | | this.hubName = hubName; |
| | | this._ = { |
| | | callbackMap: {} |
| | | }; |
| | | }, |
| | | |
| | | constructor: hubProxy, |
| | | |
| | | hasSubscriptions: function () { |
| | | return hasMembers(this._.callbackMap); |
| | | }, |
| | | |
| | | on: function (eventName, callback) { |
| | | /// <summary>Wires up a callback to be invoked when a invocation request is received from the server hub.</summary> |
| | | /// <param name="eventName" type="String">The name of the hub event to register the callback for.</param> |
| | | /// <param name="callback" type="Function">The callback to be invoked.</param> |
| | | var that = this, |
| | | callbackMap = that._.callbackMap; |
| | | |
| | | // Normalize the event name to lowercase |
| | | eventName = eventName.toLowerCase(); |
| | | |
| | | // If there is not an event registered for this callback yet we want to create its event space in the callback map. |
| | | if (!callbackMap[eventName]) { |
| | | callbackMap[eventName] = {}; |
| | | } |
| | | |
| | | // Map the callback to our encompassed function |
| | | callbackMap[eventName][callback] = function (e, data) { |
| | | callback.apply(that, data); |
| | | }; |
| | | |
| | | $(that).bind(makeEventName(eventName), callbackMap[eventName][callback]); |
| | | |
| | | return that; |
| | | }, |
| | | |
| | | off: function (eventName, callback) { |
| | | /// <summary>Removes the callback invocation request from the server hub for the given event name.</summary> |
| | | /// <param name="eventName" type="String">The name of the hub event to unregister the callback for.</param> |
| | | /// <param name="callback" type="Function">The callback to be invoked.</param> |
| | | var that = this, |
| | | callbackMap = that._.callbackMap, |
| | | callbackSpace; |
| | | |
| | | // Normalize the event name to lowercase |
| | | eventName = eventName.toLowerCase(); |
| | | |
| | | callbackSpace = callbackMap[eventName]; |
| | | |
| | | // Verify that there is an event space to unbind |
| | | if (callbackSpace) { |
| | | // Only unbind if there's an event bound with eventName and a callback with the specified callback |
| | | if (callbackSpace[callback]) { |
| | | $(that).unbind(makeEventName(eventName), callbackSpace[callback]); |
| | | |
| | | // Remove the callback from the callback map |
| | | delete callbackSpace[callback]; |
| | | |
| | | // Check if there are any members left on the event, if not we need to destroy it. |
| | | if (!hasMembers(callbackSpace)) { |
| | | delete callbackMap[eventName]; |
| | | } |
| | | } else if (!callback) { // Check if we're removing the whole event and we didn't error because of an invalid callback |
| | | $(that).unbind(makeEventName(eventName)); |
| | | |
| | | delete callbackMap[eventName]; |
| | | } |
| | | } |
| | | |
| | | return that; |
| | | }, |
| | | |
| | | invoke: function (methodName) { |
| | | /// <summary>Invokes a server hub method with the given arguments.</summary> |
| | | /// <param name="methodName" type="String">The name of the server hub method.</param> |
| | | |
| | | var that = this, |
| | | connection = that.connection, |
| | | args = $.makeArray(arguments).slice(1), |
| | | argValues = map(args, getArgValue), |
| | | data = { H: that.hubName, M: methodName, A: argValues, I: connection._.invocationCallbackId }, |
| | | d = $.Deferred(), |
| | | callback = function (minResult) { |
| | | var result = that._maximizeHubResponse(minResult), |
| | | source, |
| | | error; |
| | | |
| | | // Update the hub state |
| | | $.extend(that.state, result.State); |
| | | |
| | | if (result.Progress) { |
| | | if (d.notifyWith) { |
| | | // Progress is only supported in jQuery 1.7+ |
| | | d.notifyWith(that, [result.Progress.Data]); |
| | | } else if(!connection._.progressjQueryVersionLogged) { |
| | | connection.log("A hub method invocation progress update was received but the version of jQuery in use (" + $.prototype.jquery + ") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications."); |
| | | connection._.progressjQueryVersionLogged = true; |
| | | } |
| | | } else if (result.Error) { |
| | | // Server hub method threw an exception, log it & reject the deferred |
| | | if (result.StackTrace) { |
| | | connection.log(result.Error + "\n" + result.StackTrace + "."); |
| | | } |
| | | |
| | | // result.ErrorData is only set if a HubException was thrown |
| | | source = result.IsHubException ? "HubException" : "Exception"; |
| | | error = signalR._.error(result.Error, source); |
| | | error.data = result.ErrorData; |
| | | |
| | | connection.log(that.hubName + "." + methodName + " failed to execute. Error: " + error.message); |
| | | d.rejectWith(that, [error]); |
| | | } else { |
| | | // Server invocation succeeded, resolve the deferred |
| | | connection.log("Invoked " + that.hubName + "." + methodName); |
| | | d.resolveWith(that, [result.Result]); |
| | | } |
| | | }; |
| | | |
| | | connection._.invocationCallbacks[connection._.invocationCallbackId.toString()] = { scope: that, method: callback }; |
| | | connection._.invocationCallbackId += 1; |
| | | |
| | | if (!$.isEmptyObject(that.state)) { |
| | | data.S = that.state; |
| | | } |
| | | |
| | | connection.log("Invoking " + that.hubName + "." + methodName); |
| | | connection.send(data); |
| | | |
| | | return d.promise(); |
| | | }, |
| | | |
| | | _maximizeHubResponse: function (minHubResponse) { |
| | | return { |
| | | State: minHubResponse.S, |
| | | Result: minHubResponse.R, |
| | | Progress: minHubResponse.P ? { |
| | | Id: minHubResponse.P.I, |
| | | Data: minHubResponse.P.D |
| | | } : null, |
| | | Id: minHubResponse.I, |
| | | IsHubException: minHubResponse.H, |
| | | Error: minHubResponse.E, |
| | | StackTrace: minHubResponse.T, |
| | | ErrorData: minHubResponse.D |
| | | }; |
| | | } |
| | | }; |
| | | |
| | | hubProxy.fn.init.prototype = hubProxy.fn; |
| | | |
| | | // hubConnection |
| | | function hubConnection(url, options) { |
| | | /// <summary>Creates a new hub connection.</summary> |
| | | /// <param name="url" type="String">[Optional] The hub route url, defaults to "/signalr".</param> |
| | | /// <param name="options" type="Object">[Optional] Settings to use when creating the hubConnection.</param> |
| | | var settings = { |
| | | qs: null, |
| | | logging: false, |
| | | useDefaultPath: true |
| | | }; |
| | | |
| | | $.extend(settings, options); |
| | | |
| | | if (!url || settings.useDefaultPath) { |
| | | url = (url || "") + "/signalr"; |
| | | } |
| | | return new hubConnection.fn.init(url, settings); |
| | | } |
| | | |
| | | hubConnection.fn = hubConnection.prototype = $.connection(); |
| | | |
| | | hubConnection.fn.init = function (url, options) { |
| | | var settings = { |
| | | qs: null, |
| | | logging: false, |
| | | useDefaultPath: true |
| | | }, |
| | | connection = this; |
| | | |
| | | $.extend(settings, options); |
| | | |
| | | // Call the base constructor |
| | | $.signalR.fn.init.call(connection, url, settings.qs, settings.logging); |
| | | |
| | | // Object to store hub proxies for this connection |
| | | connection.proxies = {}; |
| | | |
| | | connection._.invocationCallbackId = 0; |
| | | connection._.invocationCallbacks = {}; |
| | | |
| | | // Wire up the received handler |
| | | connection.received(function (minData) { |
| | | var data, proxy, dataCallbackId, callback, hubName, eventName; |
| | | if (!minData) { |
| | | return; |
| | | } |
| | | |
| | | // We have to handle progress updates first in order to ensure old clients that receive |
| | | // progress updates enter the return value branch and then no-op when they can't find |
| | | // the callback in the map (because the minData.I value will not be a valid callback ID) |
| | | if (typeof (minData.P) !== "undefined") { |
| | | // Process progress notification |
| | | dataCallbackId = minData.P.I.toString(); |
| | | callback = connection._.invocationCallbacks[dataCallbackId]; |
| | | if (callback) { |
| | | callback.method.call(callback.scope, minData); |
| | | } |
| | | } else if (typeof (minData.I) !== "undefined") { |
| | | // We received the return value from a server method invocation, look up callback by id and call it |
| | | dataCallbackId = minData.I.toString(); |
| | | callback = connection._.invocationCallbacks[dataCallbackId]; |
| | | if (callback) { |
| | | // Delete the callback from the proxy |
| | | connection._.invocationCallbacks[dataCallbackId] = null; |
| | | delete connection._.invocationCallbacks[dataCallbackId]; |
| | | |
| | | // Invoke the callback |
| | | callback.method.call(callback.scope, minData); |
| | | } |
| | | } else { |
| | | data = this._maximizeClientHubInvocation(minData); |
| | | |
| | | // We received a client invocation request, i.e. broadcast from server hub |
| | | connection.log("Triggering client hub event '" + data.Method + "' on hub '" + data.Hub + "'."); |
| | | |
| | | // Normalize the names to lowercase |
| | | hubName = data.Hub.toLowerCase(); |
| | | eventName = data.Method.toLowerCase(); |
| | | |
| | | // Trigger the local invocation event |
| | | proxy = this.proxies[hubName]; |
| | | |
| | | // Update the hub state |
| | | $.extend(proxy.state, data.State); |
| | | $(proxy).triggerHandler(makeEventName(eventName), [data.Args]); |
| | | } |
| | | }); |
| | | |
| | | connection.error(function (errData, origData) { |
| | | var callbackId, callback; |
| | | |
| | | if (!origData) { |
| | | // No original data passed so this is not a send error |
| | | return; |
| | | } |
| | | |
| | | callbackId = origData.I; |
| | | callback = connection._.invocationCallbacks[callbackId]; |
| | | |
| | | // Verify that there is a callback bound (could have been cleared) |
| | | if (callback) { |
| | | // Delete the callback |
| | | connection._.invocationCallbacks[callbackId] = null; |
| | | delete connection._.invocationCallbacks[callbackId]; |
| | | |
| | | // Invoke the callback with an error to reject the promise |
| | | callback.method.call(callback.scope, { E: errData }); |
| | | } |
| | | }); |
| | | |
| | | connection.reconnecting(function () { |
| | | if (connection.transport && connection.transport.name === "webSockets") { |
| | | clearInvocationCallbacks(connection, "Connection started reconnecting before invocation result was received."); |
| | | } |
| | | }); |
| | | |
| | | connection.disconnected(function () { |
| | | clearInvocationCallbacks(connection, "Connection was disconnected before invocation result was received."); |
| | | }); |
| | | }; |
| | | |
| | | hubConnection.fn._maximizeClientHubInvocation = function (minClientHubInvocation) { |
| | | return { |
| | | Hub: minClientHubInvocation.H, |
| | | Method: minClientHubInvocation.M, |
| | | Args: minClientHubInvocation.A, |
| | | State: minClientHubInvocation.S |
| | | }; |
| | | }; |
| | | |
| | | hubConnection.fn._registerSubscribedHubs = function () { |
| | | /// <summary> |
| | | /// Sets the starting event to loop through the known hubs and register any new hubs |
| | | /// that have been added to the proxy. |
| | | /// </summary> |
| | | var connection = this; |
| | | |
| | | if (!connection._subscribedToHubs) { |
| | | connection._subscribedToHubs = true; |
| | | connection.starting(function () { |
| | | // Set the connection's data object with all the hub proxies with active subscriptions. |
| | | // These proxies will receive notifications from the server. |
| | | var subscribedHubs = []; |
| | | |
| | | $.each(connection.proxies, function (key) { |
| | | if (this.hasSubscriptions()) { |
| | | subscribedHubs.push({ name: key }); |
| | | connection.log("Client subscribed to hub '" + key + "'."); |
| | | } |
| | | }); |
| | | |
| | | if (subscribedHubs.length === 0) { |
| | | connection.log("No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to."); |
| | | } |
| | | |
| | | connection.data = connection.json.stringify(subscribedHubs); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | hubConnection.fn.createHubProxy = function (hubName) { |
| | | /// <summary> |
| | | /// Creates a new proxy object for the given hub connection that can be used to invoke |
| | | /// methods on server hubs and handle client method invocation requests from the server. |
| | | /// </summary> |
| | | /// <param name="hubName" type="String"> |
| | | /// The name of the hub on the server to create the proxy for. |
| | | /// </param> |
| | | |
| | | // Normalize the name to lowercase |
| | | hubName = hubName.toLowerCase(); |
| | | |
| | | var proxy = this.proxies[hubName]; |
| | | if (!proxy) { |
| | | proxy = hubProxy(this, hubName); |
| | | this.proxies[hubName] = proxy; |
| | | } |
| | | |
| | | this._registerSubscribedHubs(); |
| | | |
| | | return proxy; |
| | | }; |
| | | |
| | | hubConnection.fn.init.prototype = hubConnection.fn; |
| | | |
| | | $.hubConnection = hubConnection; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.version.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | (function ($, undefined) { |
| | | $.signalR.version = "2.2.2"; |
| | | }(window.jQuery)); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /*! |
| | | * ASP.NET SignalR JavaScript Library v2.2.2 |
| | | * http://signalr.net/ |
| | | * |
| | | * Copyright (c) .NET Foundation. All rights reserved. |
| | | * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | * |
| | | */ |
| | | (function(n,t,i){function w(t,i){var u,f;if(n.isArray(t)){for(u=t.length-1;u>=0;u--)f=t[u],n.type(f)==="string"&&r.transports[f]||(i.log("Invalid transport: "+f+", removing it from the transports list."),t.splice(u,1));t.length===0&&(i.log("No transports remain within the specified transport array."),t=null)}else if(r.transports[t]||t==="auto"){if(t==="auto"&&r._.ieVersion<=8)return["longPolling"]}else i.log("Invalid transport: "+t.toString()+"."),t=null;return t}function b(n){return n==="http:"?80:n==="https:"?443:void 0}function a(n,t){return t.match(/:\d+$/)?t:t+":"+b(n)}function k(t,i){var u=this,r=[];u.tryBuffer=function(i){return t.state===n.signalR.connectionState.connecting?(r.push(i),!0):!1};u.drain=function(){if(t.state===n.signalR.connectionState.connected)while(r.length>0)i(r.shift())};u.clear=function(){r=[]}}var f={nojQuery:"jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.",noTransportOnInit:"No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.",errorOnNegotiate:"Error during negotiation request.",stoppedWhileLoading:"The connection was stopped during page load.",stoppedWhileNegotiating:"The connection was stopped during the negotiate request.",errorParsingNegotiateResponse:"Error parsing negotiate response.",errorDuringStartRequest:"Error during start request. Stopping the connection.",stoppedDuringStartRequest:"The connection was stopped during the start request.",errorParsingStartResponse:"Error parsing start response: '{0}'. Stopping the connection.",invalidStartResponse:"Invalid start response: '{0}'. Stopping the connection.",protocolIncompatible:"You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.",sendFailed:"Send failed.",parseFailed:"Failed at parsing response: {0}",longPollFailed:"Long polling request failed.",eventSourceFailedToConnect:"EventSource failed to connect.",eventSourceError:"Error raised by EventSource",webSocketClosed:"WebSocket closed.",pingServerFailedInvalidResponse:"Invalid ping response when pinging server: '{0}'.",pingServerFailed:"Failed to ping server.",pingServerFailedStatusCode:"Failed to ping server. Server responded with status code {0}, stopping the connection.",pingServerFailedParse:"Failed to parse ping server response, stopping the connection.",noConnectionTransport:"Connection is in an invalid state, there is no transport active.",webSocketsInvalidState:"The Web Socket transport is in an invalid state, transitioning into reconnecting.",reconnectTimeout:"Couldn't reconnect within the configured timeout of {0} ms, disconnecting.",reconnectWindowTimeout:"The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection."};if(typeof n!="function")throw new Error(f.nojQuery);var r,h,o=t.document.readyState==="complete",e=n(t),c="__Negotiate Aborted__",u={onStart:"onStart",onStarting:"onStarting",onReceived:"onReceived",onError:"onError",onConnectionSlow:"onConnectionSlow",onReconnecting:"onReconnecting",onReconnect:"onReconnect",onStateChanged:"onStateChanged",onDisconnect:"onDisconnect"},v=function(n,i){if(i!==!1){var r;typeof t.console!="undefined"&&(r="["+(new Date).toTimeString()+"] SignalR: "+n,t.console.debug?t.console.debug(r):t.console.log&&t.console.log(r))}},s=function(t,i,r){return i===t.state?(t.state=r,n(t).triggerHandler(u.onStateChanged,[{oldState:i,newState:r}]),!0):!1},y=function(n){return n.state===r.connectionState.disconnected},l=function(n){return n._.keepAliveData.activated&&n.transport.supportsKeepAlive(n)},p=function(i){var f,e;i._.configuredStopReconnectingTimeout||(e=function(t){var i=r._.format(r.resources.reconnectTimeout,t.disconnectTimeout);t.log(i);n(t).triggerHandler(u.onError,[r._.error(i,"TimeoutException")]);t.stop(!1,!1)},i.reconnecting(function(){var n=this;n.state===r.connectionState.reconnecting&&(f=t.setTimeout(function(){e(n)},n.disconnectTimeout))}),i.stateChanged(function(n){n.oldState===r.connectionState.reconnecting&&t.clearTimeout(f)}),i._.configuredStopReconnectingTimeout=!0)};if(r=function(n,t,i){return new r.fn.init(n,t,i)},r._={defaultContentType:"application/x-www-form-urlencoded; charset=UTF-8",ieVersion:function(){var i,n;return t.navigator.appName==="Microsoft Internet Explorer"&&(n=/MSIE ([0-9]+\.[0-9]+)/.exec(t.navigator.userAgent),n&&(i=t.parseFloat(n[1]))),i}(),error:function(n,t,i){var r=new Error(n);return r.source=t,typeof i!="undefined"&&(r.context=i),r},transportError:function(n,t,r,u){var f=this.error(n,r,u);return f.transport=t?t.name:i,f},format:function(){for(var t=arguments[0],n=0;n<arguments.length-1;n++)t=t.replace("{"+n+"}",arguments[n+1]);return t},firefoxMajorVersion:function(n){var t=n.match(/Firefox\/(\d+)/);return!t||!t.length||t.length<2?0:parseInt(t[1],10)},configurePingInterval:function(i){var f=i._.config,e=function(t){n(i).triggerHandler(u.onError,[t])};f&&!i._.pingIntervalId&&f.pingInterval&&(i._.pingIntervalId=t.setInterval(function(){r.transports._logic.pingServer(i).fail(e)},f.pingInterval))}},r.events=u,r.resources=f,r.ajaxDefaults={processData:!0,timeout:null,async:!0,global:!1,cache:!1},r.changeState=s,r.isDisconnecting=y,r.connectionState={connecting:0,connected:1,reconnecting:2,disconnected:4},r.hub={start:function(){throw new Error("SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'><\/script>.");}},typeof e.on=="function")e.on("load",function(){o=!0});else e.load(function(){o=!0});r.fn=r.prototype={init:function(t,i,r){var f=n(this);this.url=t;this.qs=i;this.lastError=null;this._={keepAliveData:{},connectingMessageBuffer:new k(this,function(n){f.triggerHandler(u.onReceived,[n])}),lastMessageAt:(new Date).getTime(),lastActiveAt:(new Date).getTime(),beatInterval:5e3,beatHandle:null,totalTransportConnectTimeout:0};typeof r=="boolean"&&(this.logging=r)},_parseResponse:function(n){var t=this;return n?typeof n=="string"?t.json.parse(n):n:n},_originalJson:t.JSON,json:t.JSON,isCrossDomain:function(i,r){var u;return(i=n.trim(i),r=r||t.location,i.indexOf("http")!==0)?!1:(u=t.document.createElement("a"),u.href=i,u.protocol+a(u.protocol,u.host)!==r.protocol+a(r.protocol,r.host))},ajaxDataType:"text",contentType:"application/json; charset=UTF-8",logging:!1,state:r.connectionState.disconnected,clientProtocol:"1.5",reconnectDelay:2e3,transportConnectTimeout:0,disconnectTimeout:3e4,reconnectWindow:3e4,keepAliveWarnAt:2/3,start:function(i,h){var a=this,v={pingInterval:3e5,waitForPageLoad:!0,transport:"auto",jsonp:!1},d,y=a._deferral||n.Deferred(),b=t.document.createElement("a"),k,g;if(a.lastError=null,a._deferral=y,!a.json)throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.");if(n.type(i)==="function"?h=i:n.type(i)==="object"&&(n.extend(v,i),n.type(v.callback)==="function"&&(h=v.callback)),v.transport=w(v.transport,a),!v.transport)throw new Error("SignalR: Invalid transport(s) specified, aborting start.");return(a._.config=v,!o&&v.waitForPageLoad===!0)?(a._.deferredStartHandler=function(){a.start(i,h)},e.bind("load",a._.deferredStartHandler),y.promise()):a.state===r.connectionState.connecting?y.promise():s(a,r.connectionState.disconnected,r.connectionState.connecting)===!1?(y.resolve(a),y.promise()):(p(a),b.href=a.url,b.protocol&&b.protocol!==":"?(a.protocol=b.protocol,a.host=b.host):(a.protocol=t.document.location.protocol,a.host=b.host||t.document.location.host),a.baseUrl=a.protocol+"//"+a.host,a.wsProtocol=a.protocol==="https:"?"wss://":"ws://",v.transport==="auto"&&v.jsonp===!0&&(v.transport="longPolling"),a.url.indexOf("//")===0&&(a.url=t.location.protocol+a.url,a.log("Protocol relative URL detected, normalizing it to '"+a.url+"'.")),this.isCrossDomain(a.url)&&(a.log("Auto detected cross domain url."),v.transport==="auto"&&(v.transport=["webSockets","serverSentEvents","longPolling"]),typeof v.withCredentials=="undefined"&&(v.withCredentials=!0),v.jsonp||(v.jsonp=!n.support.cors,v.jsonp&&a.log("Using jsonp because this browser doesn't support CORS.")),a.contentType=r._.defaultContentType),a.withCredentials=v.withCredentials,a.ajaxDataType=v.jsonp?"jsonp":"text",n(a).bind(u.onStart,function(){n.type(h)==="function"&&h.call(a);y.resolve(a)}),a._.initHandler=r.transports._logic.initHandler(a),d=function(i,o){var c=r._.error(f.noTransportOnInit);if(o=o||0,o>=i.length){o===0?a.log("No transports supported by the server were selected."):o===1?a.log("No fallback transports were selected."):a.log("Fallback transports exhausted.");n(a).triggerHandler(u.onError,[c]);y.reject(c);a.stop();return}if(a.state!==r.connectionState.disconnected){var p=i[o],h=r.transports[p],v=function(){d(i,o+1)};a.transport=h;try{a._.initHandler.start(h,function(){var i=r._.firefoxMajorVersion(t.navigator.userAgent)>=11,f=!!a.withCredentials&&i;a.log("The start request succeeded. Transitioning to the connected state.");l(a)&&r.transports._logic.monitorKeepAlive(a);r.transports._logic.startHeartbeat(a);r._.configurePingInterval(a);s(a,r.connectionState.connecting,r.connectionState.connected)||a.log("WARNING! The connection was not in the connecting state.");a._.connectingMessageBuffer.drain();n(a).triggerHandler(u.onStart);e.bind("unload",function(){a.log("Window unloading, stopping the connection.");a.stop(f)});i&&e.bind("beforeunload",function(){t.setTimeout(function(){a.stop(f)},0)})},v)}catch(w){a.log(h.name+" transport threw '"+w.message+"' when attempting to start.");v()}}},k=a.url+"/negotiate",g=function(t,i){var e=r._.error(f.errorOnNegotiate,t,i._.negotiateRequest);n(i).triggerHandler(u.onError,e);y.reject(e);i.stop()},n(a).triggerHandler(u.onStarting),k=r.transports._logic.prepareQueryString(a,k),a.log("Negotiating with '"+k+"'."),a._.negotiateRequest=r.transports._logic.ajax(a,{url:k,error:function(n,t){t!==c?g(n,a):y.reject(r._.error(f.stoppedWhileNegotiating,null,a._.negotiateRequest))},success:function(t){var i,e,h,o=[],s=[];try{i=a._parseResponse(t)}catch(c){g(r._.error(f.errorParsingNegotiateResponse,c),a);return}if(e=a._.keepAliveData,a.appRelativeUrl=i.Url,a.id=i.ConnectionId,a.token=i.ConnectionToken,a.webSocketServerUrl=i.WebSocketServerUrl,a._.pollTimeout=i.ConnectionTimeout*1e3+1e4,a.disconnectTimeout=i.DisconnectTimeout*1e3,a._.totalTransportConnectTimeout=a.transportConnectTimeout+i.TransportConnectTimeout*1e3,i.KeepAliveTimeout?(e.activated=!0,e.timeout=i.KeepAliveTimeout*1e3,e.timeoutWarning=e.timeout*a.keepAliveWarnAt,a._.beatInterval=(e.timeout-e.timeoutWarning)/3):e.activated=!1,a.reconnectWindow=a.disconnectTimeout+(e.timeout||0),!i.ProtocolVersion||i.ProtocolVersion!==a.clientProtocol){h=r._.error(r._.format(f.protocolIncompatible,a.clientProtocol,i.ProtocolVersion));n(a).triggerHandler(u.onError,[h]);y.reject(h);return}n.each(r.transports,function(n){if(n.indexOf("_")===0||n==="webSockets"&&!i.TryWebSockets)return!0;s.push(n)});n.isArray(v.transport)?n.each(v.transport,function(t,i){n.inArray(i,s)>=0&&o.push(i)}):v.transport==="auto"?o=s:n.inArray(v.transport,s)>=0&&o.push(v.transport);d(o)}}),y.promise())},starting:function(t){var i=this;return n(i).bind(u.onStarting,function(){t.call(i)}),i},send:function(n){var t=this;if(t.state===r.connectionState.disconnected)throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()");if(t.state===r.connectionState.connecting)throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.");return t.transport.send(t,n),t},received:function(t){var i=this;return n(i).bind(u.onReceived,function(n,r){t.call(i,r)}),i},stateChanged:function(t){var i=this;return n(i).bind(u.onStateChanged,function(n,r){t.call(i,r)}),i},error:function(t){var i=this;return n(i).bind(u.onError,function(n,r,u){i.lastError=r;t.call(i,r,u)}),i},disconnected:function(t){var i=this;return n(i).bind(u.onDisconnect,function(){t.call(i)}),i},connectionSlow:function(t){var i=this;return n(i).bind(u.onConnectionSlow,function(){t.call(i)}),i},reconnecting:function(t){var i=this;return n(i).bind(u.onReconnecting,function(){t.call(i)}),i},reconnected:function(t){var i=this;return n(i).bind(u.onReconnect,function(){t.call(i)}),i},stop:function(i,h){var a=this,v=a._deferral;if(a._.deferredStartHandler&&e.unbind("load",a._.deferredStartHandler),delete a._.config,delete a._.deferredStartHandler,!o&&(!a._.config||a._.config.waitForPageLoad===!0)){a.log("Stopping connection prior to negotiate.");v&&v.reject(r._.error(f.stoppedWhileLoading));return}if(a.state!==r.connectionState.disconnected)return a.log("Stopping connection."),t.clearTimeout(a._.beatHandle),t.clearInterval(a._.pingIntervalId),a.transport&&(a.transport.stop(a),h!==!1&&a.transport.abort(a,i),l(a)&&r.transports._logic.stopMonitoringKeepAlive(a),a.transport=null),a._.negotiateRequest&&(a._.negotiateRequest.abort(c),delete a._.negotiateRequest),a._.initHandler&&a._.initHandler.stop(),delete a._deferral,delete a.messageId,delete a.groupsToken,delete a.id,delete a._.pingIntervalId,delete a._.lastMessageAt,delete a._.lastActiveAt,a._.connectingMessageBuffer.clear(),n(a).unbind(u.onStart),s(a,a.state,r.connectionState.disconnected),n(a).triggerHandler(u.onDisconnect),a},log:function(n){v(n,this.logging)}};r.fn.init.prototype=r.fn;r.noConflict=function(){return n.connection===r&&(n.connection=h),r};n.connection&&(h=n.connection);n.connection=n.signalR=r})(window.jQuery,window),function(n,t,i){function s(n){n._.keepAliveData.monitoring&&l(n);u.markActive(n)&&(n._.beatHandle=t.setTimeout(function(){s(n)},n._.beatInterval))}function l(t){var i=t._.keepAliveData,u;t.state===r.connectionState.connected&&(u=(new Date).getTime()-t._.lastMessageAt,u>=i.timeout?(t.log("Keep alive timed out. Notifying transport that connection has been lost."),t.transport.lostConnection(t)):u>=i.timeoutWarning?i.userNotified||(t.log("Keep alive has been missed, connection may be dead/slow."),n(t).triggerHandler(f.onConnectionSlow),i.userNotified=!0):i.userNotified=!1)}function e(n,t){var i=n.url+t;return n.transport&&(i+="?transport="+n.transport.name),u.prepareQueryString(n,i)}function h(n){this.connection=n;this.startRequested=!1;this.startCompleted=!1;this.connectionStopped=!1}var r=n.signalR,f=n.signalR.events,c=n.signalR.changeState,o="__Start Aborted__",u;r.transports={};h.prototype={start:function(n,r,u){var f=this,e=f.connection,o=!1;if(f.startRequested||f.connectionStopped){e.log("WARNING! "+n.name+" transport cannot be started. Initialization ongoing or completed.");return}e.log(n.name+" transport starting.");n.start(e,function(){o||f.initReceived(n,r)},function(t){return o||(o=!0,f.transportFailed(n,t,u)),!f.startCompleted||f.connectionStopped});f.transportTimeoutHandle=t.setTimeout(function(){o||(o=!0,e.log(n.name+" transport timed out when trying to connect."),f.transportFailed(n,i,u))},e._.totalTransportConnectTimeout)},stop:function(){this.connectionStopped=!0;t.clearTimeout(this.transportTimeoutHandle);r.transports._logic.tryAbortStartRequest(this.connection)},initReceived:function(n,i){var u=this,f=u.connection;if(u.startRequested){f.log("WARNING! The client received multiple init messages.");return}u.connectionStopped||(u.startRequested=!0,t.clearTimeout(u.transportTimeoutHandle),f.log(n.name+" transport connected. Initiating start request."),r.transports._logic.ajaxStart(f,function(){u.startCompleted=!0;i()}))},transportFailed:function(i,u,e){var o=this.connection,h=o._deferral,s;this.connectionStopped||(t.clearTimeout(this.transportTimeoutHandle),this.startRequested?this.startCompleted||(s=r._.error(r.resources.errorDuringStartRequest,u),o.log(i.name+" transport failed during the start request. Stopping the connection."),n(o).triggerHandler(f.onError,[s]),h&&h.reject(s),o.stop()):(i.stop(o),o.log(i.name+" transport failed to connect. Attempting to fall back."),e()))}};u=r.transports._logic={ajax:function(t,i){return n.ajax(n.extend(!0,{},n.signalR.ajaxDefaults,{type:"GET",data:{},xhrFields:{withCredentials:t.withCredentials},contentType:t.contentType,dataType:t.ajaxDataType},i))},pingServer:function(t){var e,f,i=n.Deferred();return t.transport?(e=t.url+"/ping",e=u.addQs(e,t.qs),f=u.ajax(t,{url:e,success:function(n){var u;try{u=t._parseResponse(n)}catch(e){i.reject(r._.transportError(r.resources.pingServerFailedParse,t.transport,e,f));t.stop();return}u.Response==="pong"?i.resolve():i.reject(r._.transportError(r._.format(r.resources.pingServerFailedInvalidResponse,n),t.transport,null,f))},error:function(n){n.status===401||n.status===403?(i.reject(r._.transportError(r._.format(r.resources.pingServerFailedStatusCode,n.status),t.transport,n,f)),t.stop()):i.reject(r._.transportError(r.resources.pingServerFailed,t.transport,n,f))}})):i.reject(r._.transportError(r.resources.noConnectionTransport,t.transport)),i.promise()},prepareQueryString:function(n,i){var r;return r=u.addQs(i,"clientProtocol="+n.clientProtocol),r=u.addQs(r,n.qs),n.token&&(r+="&connectionToken="+t.encodeURIComponent(n.token)),n.data&&(r+="&connectionData="+t.encodeURIComponent(n.data)),r},addQs:function(t,i){var r=t.indexOf("?")!==-1?"&":"?",u;if(!i)return t;if(typeof i=="object")return t+r+n.param(i);if(typeof i=="string")return u=i.charAt(0),(u==="?"||u==="&")&&(r=""),t+r+i;throw new Error("Query string property must be either a string or object.");},getUrl:function(n,i,r,f,e){var h=i==="webSockets"?"":n.baseUrl,o=h+n.appRelativeUrl,s="transport="+i;return!e&&n.groupsToken&&(s+="&groupsToken="+t.encodeURIComponent(n.groupsToken)),r?(o+=f?"/poll":"/reconnect",!e&&n.messageId&&(s+="&messageId="+t.encodeURIComponent(n.messageId))):o+="/connect",o+="?"+s,o=u.prepareQueryString(n,o),e||(o+="&tid="+Math.floor(Math.random()*11)),o},maximizePersistentResponse:function(n){return{MessageId:n.C,Messages:n.M,Initialized:typeof n.S!="undefined"?!0:!1,ShouldReconnect:typeof n.T!="undefined"?!0:!1,LongPollDelay:n.L,GroupsToken:n.G}},updateGroups:function(n,t){t&&(n.groupsToken=t)},stringifySend:function(n,t){return typeof t=="string"||typeof t=="undefined"||t===null?t:n.json.stringify(t)},ajaxSend:function(t,i){var h=u.stringifySend(t,i),c=e(t,"/send"),o,s=function(t,u){n(u).triggerHandler(f.onError,[r._.transportError(r.resources.sendFailed,u.transport,t,o),i])};return o=u.ajax(t,{url:c,type:t.ajaxDataType==="jsonp"?"GET":"POST",contentType:r._.defaultContentType,data:{data:h},success:function(n){var i;if(n){try{i=t._parseResponse(n)}catch(r){s(r,t);t.stop();return}u.triggerReceived(t,i)}},error:function(n,i){i!=="abort"&&i!=="parsererror"&&s(n,t)}})},ajaxAbort:function(n,t){if(typeof n.transport!="undefined"){t=typeof t=="undefined"?!0:t;var i=e(n,"/abort");u.ajax(n,{url:i,async:t,timeout:1e3,type:"POST"});n.log("Fired ajax abort async = "+t+".")}},ajaxStart:function(t,i){var h=function(n){var i=t._deferral;i&&i.reject(n)},s=function(i){t.log("The start request failed. Stopping the connection.");n(t).triggerHandler(f.onError,[i]);h(i);t.stop()};t._.startRequest=u.ajax(t,{url:e(t,"/start"),success:function(n,u,f){var e;try{e=t._parseResponse(n)}catch(o){s(r._.error(r._.format(r.resources.errorParsingStartResponse,n),o,f));return}e.Response==="started"?i():s(r._.error(r._.format(r.resources.invalidStartResponse,n),null,f))},error:function(n,i,u){i!==o?s(r._.error(r.resources.errorDuringStartRequest,u,n)):(t.log("The start request aborted because connection.stop() was called."),h(r._.error(r.resources.stoppedDuringStartRequest,null,n)))}})},tryAbortStartRequest:function(n){n._.startRequest&&(n._.startRequest.abort(o),delete n._.startRequest)},tryInitialize:function(n,t,i){t.Initialized&&i?i():t.Initialized&&n.log("WARNING! The client received an init message after reconnecting.")},triggerReceived:function(t,i){t._.connectingMessageBuffer.tryBuffer(i)||n(t).triggerHandler(f.onReceived,[i])},processMessages:function(t,i,r){var f;u.markLastMessage(t);i&&(f=u.maximizePersistentResponse(i),u.updateGroups(t,f.GroupsToken),f.MessageId&&(t.messageId=f.MessageId),f.Messages&&(n.each(f.Messages,function(n,i){u.triggerReceived(t,i)}),u.tryInitialize(t,f,r)))},monitorKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring?t.log("Tried to monitor keep alive but it's already being monitored."):(i.monitoring=!0,u.markLastMessage(t),t._.keepAliveData.reconnectKeepAliveUpdate=function(){u.markLastMessage(t)},n(t).bind(f.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t.log("Now monitoring keep alive with a warning timeout of "+i.timeoutWarning+", keep alive timeout of "+i.timeout+" and disconnecting timeout of "+t.disconnectTimeout))},stopMonitoringKeepAlive:function(t){var i=t._.keepAliveData;i.monitoring&&(i.monitoring=!1,n(t).unbind(f.onReconnect,t._.keepAliveData.reconnectKeepAliveUpdate),t._.keepAliveData={},t.log("Stopping the monitoring of the keep alive."))},startHeartbeat:function(n){n._.lastActiveAt=(new Date).getTime();s(n)},markLastMessage:function(n){n._.lastMessageAt=(new Date).getTime()},markActive:function(n){return u.verifyLastActive(n)?(n._.lastActiveAt=(new Date).getTime(),!0):!1},isConnectedOrReconnecting:function(n){return n.state===r.connectionState.connected||n.state===r.connectionState.reconnecting},ensureReconnectingState:function(t){return c(t,r.connectionState.connected,r.connectionState.reconnecting)===!0&&n(t).triggerHandler(f.onReconnecting),t.state===r.connectionState.reconnecting},clearReconnectTimeout:function(n){n&&n._.reconnectTimeout&&(t.clearTimeout(n._.reconnectTimeout),delete n._.reconnectTimeout)},verifyLastActive:function(t){if((new Date).getTime()-t._.lastActiveAt>=t.reconnectWindow){var i=r._.format(r.resources.reconnectWindowTimeout,new Date(t._.lastActiveAt),t.reconnectWindow);return t.log(i),n(t).triggerHandler(f.onError,[r._.error(i,"TimeoutException")]),t.stop(!1,!1),!1}return!0},reconnect:function(n,i){var f=r.transports[i];if(u.isConnectedOrReconnecting(n)&&!n._.reconnectTimeout){if(!u.verifyLastActive(n))return;n._.reconnectTimeout=t.setTimeout(function(){u.verifyLastActive(n)&&(f.stop(n),u.ensureReconnectingState(n)&&(n.log(i+" reconnecting."),f.start(n)))},n.reconnectDelay)}},handleParseFailure:function(t,i,u,e,o){var s=r._.transportError(r._.format(r.resources.parseFailed,i),t.transport,u,o);e&&e(s)?t.log("Failed to parse server response while attempting to connect."):(n(t).triggerHandler(f.onError,[s]),t.stop())},initHandler:function(n){return new h(n)},foreverFrame:{count:0,connections:{}}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,f=n.signalR.changeState,i=r.transports._logic;r.transports.webSockets={name:"webSockets",supportsKeepAlive:function(){return!0},send:function(t,f){var e=i.stringifySend(t,f);try{t.socket.send(e)}catch(o){n(t).triggerHandler(u.onError,[r._.transportError(r.resources.webSocketsInvalidState,t.transport,o,t.socket),f])}},start:function(e,o,s){var h,c=!1,l=this,a=!o,v=n(e);if(!t.WebSocket){s();return}e.socket||(h=e.webSocketServerUrl?e.webSocketServerUrl:e.wsProtocol+e.host,h+=i.getUrl(e,this.name,a),e.log("Connecting to websocket endpoint '"+h+"'."),e.socket=new t.WebSocket(h),e.socket.onopen=function(){c=!0;e.log("Websocket opened.");i.clearReconnectTimeout(e);f(e,r.connectionState.reconnecting,r.connectionState.connected)===!0&&v.triggerHandler(u.onReconnect)},e.socket.onclose=function(t){var i;this===e.socket&&(c&&typeof t.wasClean!="undefined"&&t.wasClean===!1?(i=r._.transportError(r.resources.webSocketClosed,e.transport,t),e.log("Unclean disconnect from websocket: "+(t.reason||"[no reason given]."))):e.log("Websocket closed."),s&&s(i)||(i&&n(e).triggerHandler(u.onError,[i]),l.reconnect(e)))},e.socket.onmessage=function(t){var r;try{r=e._parseResponse(t.data)}catch(u){i.handleParseFailure(e,t.data,u,s,t);return}r&&(n.isEmptyObject(r)||r.M?i.processMessages(e,r,o):i.triggerReceived(e,r))})},reconnect:function(n){i.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},stop:function(n){i.clearReconnectTimeout(n);n.socket&&(n.log("Closing the Websocket."),n.socket.close(),n.socket=null)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var i=n.signalR,u=n.signalR.events,e=n.signalR.changeState,r=i.transports._logic,f=function(n){t.clearTimeout(n._.reconnectAttemptTimeoutHandle);delete n._.reconnectAttemptTimeoutHandle};i.transports.serverSentEvents={name:"serverSentEvents",supportsKeepAlive:function(){return!0},timeOut:3e3,start:function(o,s,h){var c=this,l=!1,a=n(o),v=!s,y;if(o.eventSource&&(o.log("The connection already has an event source. Stopping it."),o.stop()),!t.EventSource){h&&(o.log("This browser doesn't support SSE."),h());return}y=r.getUrl(o,this.name,v);try{o.log("Attempting to connect to SSE endpoint '"+y+"'.");o.eventSource=new t.EventSource(y,{withCredentials:o.withCredentials})}catch(p){o.log("EventSource failed trying to connect with error "+p.Message+".");h?h():(a.triggerHandler(u.onError,[i._.transportError(i.resources.eventSourceFailedToConnect,o.transport,p)]),v&&c.reconnect(o));return}v&&(o._.reconnectAttemptTimeoutHandle=t.setTimeout(function(){l===!1&&o.eventSource.readyState!==t.EventSource.OPEN&&c.reconnect(o)},c.timeOut));o.eventSource.addEventListener("open",function(){o.log("EventSource connected.");f(o);r.clearReconnectTimeout(o);l===!1&&(l=!0,e(o,i.connectionState.reconnecting,i.connectionState.connected)===!0&&a.triggerHandler(u.onReconnect))},!1);o.eventSource.addEventListener("message",function(n){var t;if(n.data!=="initialized"){try{t=o._parseResponse(n.data)}catch(i){r.handleParseFailure(o,n.data,i,h,n);return}r.processMessages(o,t,s)}},!1);o.eventSource.addEventListener("error",function(n){var r=i._.transportError(i.resources.eventSourceError,o.transport,n);this===o.eventSource&&(h&&h(r)||(o.log("EventSource readyState: "+o.eventSource.readyState+"."),n.eventPhase===t.EventSource.CLOSED?(o.log("EventSource reconnecting due to the server connection ending."),c.reconnect(o)):(o.log("EventSource error."),a.triggerHandler(u.onError,[r]))))},!1)},reconnect:function(n){r.reconnect(n,this.name)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){r.ajaxSend(n,t)},stop:function(n){f(n);r.clearReconnectTimeout(n);n&&n.eventSource&&(n.log("EventSource calling close()."),n.eventSource.close(),n.eventSource=null,delete n.eventSource)},abort:function(n,t){r.ajaxAbort(n,t)}}}(window.jQuery,window),function(n,t){var r=n.signalR,e=n.signalR.events,o=n.signalR.changeState,i=r.transports._logic,u=function(){var n=t.document.createElement("iframe");return n.setAttribute("style","position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"),n},f=function(){var i=null,f=1e3,n=0;return{prevent:function(){r._.ieVersion<=8&&(n===0&&(i=t.setInterval(function(){var n=u();t.document.body.appendChild(n);t.document.body.removeChild(n);n=null},f)),n++)},cancel:function(){n===1&&t.clearInterval(i);n>0&&n--}}}();r.transports.foreverFrame={name:"foreverFrame",supportsKeepAlive:function(){return!0},iframeClearThreshold:50,start:function(n,r,e){var l=this,s=i.foreverFrame.count+=1,h,o=u(),c=function(){n.log("Forever frame iframe finished loading and is no longer receiving messages.");e&&e()||l.reconnect(n)};if(t.EventSource){e&&(n.log("Forever Frame is not supported by SignalR on browsers with SSE support."),e());return}o.setAttribute("data-signalr-connection-id",n.id);f.prevent();h=i.getUrl(n,this.name);h+="&frameId="+s;t.document.documentElement.appendChild(o);n.log("Binding to iframe's load event.");o.addEventListener?o.addEventListener("load",c,!1):o.attachEvent&&o.attachEvent("onload",c);o.src=h;i.foreverFrame.connections[s]=n;n.frame=o;n.frameId=s;r&&(n.onSuccess=function(){n.log("Iframe transport started.");r()})},reconnect:function(n){var r=this;i.isConnectedOrReconnecting(n)&&i.verifyLastActive(n)&&t.setTimeout(function(){if(i.verifyLastActive(n)&&n.frame&&i.ensureReconnectingState(n)){var u=n.frame,t=i.getUrl(n,r.name,!0)+"&frameId="+n.frameId;n.log("Updating iframe src to '"+t+"'.");u.src=t}},n.reconnectDelay)},lostConnection:function(n){this.reconnect(n)},send:function(n,t){i.ajaxSend(n,t)},receive:function(t,u){var f,e,o;if(t.json!==t._originalJson&&(u=t._originalJson.stringify(u)),o=t._parseResponse(u),i.processMessages(t,o,t.onSuccess),t.state===n.signalR.connectionState.connected&&(t.frameMessageCount=(t.frameMessageCount||0)+1,t.frameMessageCount>r.transports.foreverFrame.iframeClearThreshold&&(t.frameMessageCount=0,f=t.frame.contentWindow||t.frame.contentDocument,f&&f.document&&f.document.body)))for(e=f.document.body;e.firstChild;)e.removeChild(e.firstChild)},stop:function(n){var r=null;if(f.cancel(),n.frame){if(n.frame.stop)n.frame.stop();else try{r=n.frame.contentWindow||n.frame.contentDocument;r.document&&r.document.execCommand&&r.document.execCommand("Stop")}catch(u){n.log("Error occurred when stopping foreverFrame transport. Message = "+u.message+".")}n.frame.parentNode===t.document.documentElement&&t.document.documentElement.removeChild(n.frame);delete i.foreverFrame.connections[n.frameId];n.frame=null;n.frameId=null;delete n.frame;delete n.frameId;delete n.onSuccess;delete n.frameMessageCount;n.log("Stopping forever frame.")}},abort:function(n,t){i.ajaxAbort(n,t)},getConnection:function(n){return i.foreverFrame.connections[n]},started:function(t){o(t,r.connectionState.reconnecting,r.connectionState.connected)===!0&&n(t).triggerHandler(e.onReconnect)}}}(window.jQuery,window),function(n,t){var r=n.signalR,u=n.signalR.events,e=n.signalR.changeState,f=n.signalR.isDisconnecting,i=r.transports._logic;r.transports.longPolling={name:"longPolling",supportsKeepAlive:function(){return!1},reconnectDelay:3e3,start:function(o,s,h){var a=this,v=function(){v=n.noop;o.log("LongPolling connected.");s?s():o.log("WARNING! The client received an init message after reconnecting.")},y=function(n){return h(n)?(o.log("LongPolling failed to connect."),!0):!1},c=o._,l=0,p=function(i){t.clearTimeout(c.reconnectTimeoutId);c.reconnectTimeoutId=null;e(i,r.connectionState.reconnecting,r.connectionState.connected)===!0&&(i.log("Raising the reconnect event"),n(i).triggerHandler(u.onReconnect))},w=36e5;o.pollXhr&&(o.log("Polling xhr requests already exists, aborting."),o.stop());o.messageId=null;c.reconnectTimeoutId=null;c.pollTimeoutId=t.setTimeout(function(){(function e(s,h){var g=s.messageId,nt=g===null,k=!nt,tt=!h,d=i.getUrl(s,a.name,k,tt,!0),b={};(s.messageId&&(b.messageId=s.messageId),s.groupsToken&&(b.groupsToken=s.groupsToken),f(s)!==!0)&&(o.log("Opening long polling request to '"+d+"'."),s.pollXhr=i.ajax(o,{xhrFields:{onprogress:function(){i.markLastMessage(o)}},url:d,type:"POST",contentType:r._.defaultContentType,data:b,timeout:o._.pollTimeout,success:function(r){var h,w=0,u,a;o.log("Long poll complete.");l=0;try{h=o._parseResponse(r)}catch(b){i.handleParseFailure(s,r,b,y,s.pollXhr);return}(c.reconnectTimeoutId!==null&&p(s),h&&(u=i.maximizePersistentResponse(h)),i.processMessages(s,h,v),u&&n.type(u.LongPollDelay)==="number"&&(w=u.LongPollDelay),f(s)!==!0)&&(a=u&&u.ShouldReconnect,!a||i.ensureReconnectingState(s))&&(w>0?c.pollTimeoutId=t.setTimeout(function(){e(s,a)},w):e(s,a))},error:function(f,h){var v=r._.transportError(r.resources.longPollFailed,o.transport,f,s.pollXhr);if(t.clearTimeout(c.reconnectTimeoutId),c.reconnectTimeoutId=null,h==="abort"){o.log("Aborted xhr request.");return}if(!y(v)){if(l++,o.state!==r.connectionState.reconnecting&&(o.log("An error occurred using longPolling. Status = "+h+". Response = "+f.responseText+"."),n(s).triggerHandler(u.onError,[v])),(o.state===r.connectionState.connected||o.state===r.connectionState.reconnecting)&&!i.verifyLastActive(o))return;if(!i.ensureReconnectingState(s))return;c.pollTimeoutId=t.setTimeout(function(){e(s,!0)},a.reconnectDelay)}}}),k&&h===!0&&(c.reconnectTimeoutId=t.setTimeout(function(){p(s)},Math.min(1e3*(Math.pow(2,l)-1),w))))})(o)},250)},lostConnection:function(n){n.pollXhr&&n.pollXhr.abort("lostConnection")},send:function(n,t){i.ajaxSend(n,t)},stop:function(n){t.clearTimeout(n._.pollTimeoutId);t.clearTimeout(n._.reconnectTimeoutId);delete n._.pollTimeoutId;delete n._.reconnectTimeoutId;n.pollXhr&&(n.pollXhr.abort(),n.pollXhr=null,delete n.pollXhr)},abort:function(n,t){i.ajaxAbort(n,t)}}}(window.jQuery,window),function(n){function r(n){return n+e}function s(n,t,i){for(var f=n.length,u=[],r=0;r<f;r+=1)n.hasOwnProperty(r)&&(u[r]=t.call(i,n[r],r,n));return u}function h(t){return n.isFunction(t)?null:n.type(t)==="undefined"?null:t}function u(n){for(var t in n)if(n.hasOwnProperty(t))return!0;return!1}function f(n,t){var i=n._.invocationCallbacks,r,f;u(i)&&n.log("Clearing hub invocation callbacks with error: "+t+".");n._.invocationCallbackId=0;delete n._.invocationCallbacks;n._.invocationCallbacks={};for(f in i)r=i[f],r.method.call(r.scope,{E:t})}function i(n,t){return new i.fn.init(n,t)}function t(i,r){var u={qs:null,logging:!1,useDefaultPath:!0};return n.extend(u,r),(!i||u.useDefaultPath)&&(i=(i||"")+"/signalr"),new t.fn.init(i,u)}var e=".hubProxy",o=n.signalR;i.fn=i.prototype={init:function(n,t){this.state={};this.connection=n;this.hubName=t;this._={callbackMap:{}}},constructor:i,hasSubscriptions:function(){return u(this._.callbackMap)},on:function(t,i){var u=this,f=u._.callbackMap;return t=t.toLowerCase(),f[t]||(f[t]={}),f[t][i]=function(n,t){i.apply(u,t)},n(u).bind(r(t),f[t][i]),u},off:function(t,i){var e=this,o=e._.callbackMap,f;return t=t.toLowerCase(),f=o[t],f&&(f[i]?(n(e).unbind(r(t),f[i]),delete f[i],u(f)||delete o[t]):i||(n(e).unbind(r(t)),delete o[t])),e},invoke:function(t){var i=this,r=i.connection,e=n.makeArray(arguments).slice(1),c=s(e,h),f={H:i.hubName,M:t,A:c,I:r._.invocationCallbackId},u=n.Deferred(),l=function(f){var e=i._maximizeHubResponse(f),h,s;n.extend(i.state,e.State);e.Progress?u.notifyWith?u.notifyWith(i,[e.Progress.Data]):r._.progressjQueryVersionLogged||(r.log("A hub method invocation progress update was received but the version of jQuery in use ("+n.prototype.jquery+") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications."),r._.progressjQueryVersionLogged=!0):e.Error?(e.StackTrace&&r.log(e.Error+"\n"+e.StackTrace+"."),h=e.IsHubException?"HubException":"Exception",s=o._.error(e.Error,h),s.data=e.ErrorData,r.log(i.hubName+"."+t+" failed to execute. Error: "+s.message),u.rejectWith(i,[s])):(r.log("Invoked "+i.hubName+"."+t),u.resolveWith(i,[e.Result]))};return r._.invocationCallbacks[r._.invocationCallbackId.toString()]={scope:i,method:l},r._.invocationCallbackId+=1,n.isEmptyObject(i.state)||(f.S=i.state),r.log("Invoking "+i.hubName+"."+t),r.send(f),u.promise()},_maximizeHubResponse:function(n){return{State:n.S,Result:n.R,Progress:n.P?{Id:n.P.I,Data:n.P.D}:null,Id:n.I,IsHubException:n.H,Error:n.E,StackTrace:n.T,ErrorData:n.D}}};i.fn.init.prototype=i.fn;t.fn=t.prototype=n.connection();t.fn.init=function(t,i){var e={qs:null,logging:!1,useDefaultPath:!0},u=this;n.extend(e,i);n.signalR.fn.init.call(u,t,e.qs,e.logging);u.proxies={};u._.invocationCallbackId=0;u._.invocationCallbacks={};u.received(function(t){var f,o,e,i,s,h;t&&(typeof t.P!="undefined"?(e=t.P.I.toString(),i=u._.invocationCallbacks[e],i&&i.method.call(i.scope,t)):typeof t.I!="undefined"?(e=t.I.toString(),i=u._.invocationCallbacks[e],i&&(u._.invocationCallbacks[e]=null,delete u._.invocationCallbacks[e],i.method.call(i.scope,t))):(f=this._maximizeClientHubInvocation(t),u.log("Triggering client hub event '"+f.Method+"' on hub '"+f.Hub+"'."),s=f.Hub.toLowerCase(),h=f.Method.toLowerCase(),o=this.proxies[s],n.extend(o.state,f.State),n(o).triggerHandler(r(h),[f.Args])))});u.error(function(n,t){var i,r;t&&(i=t.I,r=u._.invocationCallbacks[i],r&&(u._.invocationCallbacks[i]=null,delete u._.invocationCallbacks[i],r.method.call(r.scope,{E:n})))});u.reconnecting(function(){u.transport&&u.transport.name==="webSockets"&&f(u,"Connection started reconnecting before invocation result was received.")});u.disconnected(function(){f(u,"Connection was disconnected before invocation result was received.")})};t.fn._maximizeClientHubInvocation=function(n){return{Hub:n.H,Method:n.M,Args:n.A,State:n.S}};t.fn._registerSubscribedHubs=function(){var t=this;t._subscribedToHubs||(t._subscribedToHubs=!0,t.starting(function(){var i=[];n.each(t.proxies,function(n){this.hasSubscriptions()&&(i.push({name:n}),t.log("Client subscribed to hub '"+n+"'."))});i.length===0&&t.log("No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to.");t.data=t.json.stringify(i)}))};t.fn.createHubProxy=function(n){n=n.toLowerCase();var t=this.proxies[n];return t||(t=i(this,n),this.proxies[n]=t),this._registerSubscribedHubs(),t};t.fn.init.prototype=t.fn;n.hubConnection=t}(window.jQuery,window),function(n){n.signalR.version="2.2.2"}(window.jQuery); |
| | |
| | | <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | </assemblyBinding> |
| | | </runtime> |
| | | <system.codedom> |
| | |
| | | <name>VueWebApi</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="M:VueWebApi.SwaggerConfig.GetXmlCommentsPath(System.String)"> |
| | | <summary> |
| | | XMLè·¯å¾æ¼æ¥ |
| | | </summary> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:VueWebApi.App_Start.SwaggerControllerDescProvider"> |
| | | <summary> |
| | | swaggeræ¾ç¤ºæ§å¶å¨çæè¿° |
| | |
| | | ä»APIææ¡£ä¸è¯»åæ§å¶å¨æè¿° |
| | | </summary> |
| | | <returns>æææ§å¶å¨æè¿°</returns> |
| | | </member> |
| | | <member name="M:VueWebApi.SwaggerConfig.GetXmlCommentsPath(System.String)"> |
| | | <summary> |
| | | XMLè·¯å¾æ¼æ¥ |
| | | </summary> |
| | | <param name="name"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:VueWebApi.Areas.HelpPage.ApiDescriptionExtensions.GetFriendlyId(System.Web.Http.Description.ApiDescription)"> |
| | | <summary> |
| | |
| | | </summary> |
| | | <param name="documentPath">The physical path to XML document.</param> |
| | | </member> |
| | | <member name="F:VueWebApi.Hubs.ChatHub.userList"> |
| | | <summary> |
| | | éæç¨æ·å表 |
| | | </summary> |
| | | </member> |
| | | <member name="F:VueWebApi.Hubs.ChatHub._connections"> |
| | | <summary> |
| | | ç¨æ·çconnectionIDä¸ç¨æ·å对ç
§è¡¨ |
| | | </summary> |
| | | </member> |
| | | <member name="M:VueWebApi.Hubs.ChatHub.SendByGroup(System.String,System.String,System.String)"> |
| | | <summary> |
| | | åé彿°ï¼å端触åè¯¥å½æ°ç»æå¡å¨ï¼æå¡å¨å¨å°æ¶æ¯åéç»å端ï¼ï¼Clients.All.(彿°å)æ¯å
¨ä½å¹¿æï¼å¦å¤Clientsæä¾äºç»æï¼å¹¿ææé¤ï¼ç»ææé¤ï¼æå®ç¨æ·æåççï¼ |
| | | è¯¥å½æ°åå¨åç«¯ä½¿ç¨æ¶ä¸å®è¦æ³¨æï¼å端è°ç¨è¯¥å½æ°æ¶ï¼å½æ°é¦åæ¯ä¸å®è¦å°å |
| | | </summary> |
| | | <param name="name1">åèµ·è
</param> |
| | | <param name="name2">æ¶æ¯æ¥æ¶è
</param> |
| | | <param name="cont">æ¶æ¯å
容</param> |
| | | </member> |
| | | <member name="M:VueWebApi.Hubs.ChatHub.SendLogin(System.String)"> |
| | | <summary> |
| | | ç¨æ·ä¸çº¿å½æ° |
| | | </summary> |
| | | <param name="name"></param> |
| | | </member> |
| | | <member name="M:VueWebApi.Controllers.AppDeviceManageController.CheckScanDeviceQrCodeData(System.String)"> |
| | | <summary> |
| | | æ¥å¸¸ç¹æ£,æ«æå·¥ä½/设å¤äºç»´ç |
| | |
| | | <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | </assemblyBinding> |
| | | </runtime> |
| | | <system.codedom> |
| | |
| | | <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | <dependentAssembly> |
| | | <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> |
| | | <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> |
| | | </dependentAssembly> |
| | | </assemblyBinding> |
| | | </runtime> |
| | | <system.codedom> |
| | |
| | | 248d9ccaf03385be1c49da731abd00e286709822 |
| | | 4c04b5c24a8e03c4e6abfe256010d8ea60a4acec |
| | |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\ICSharpCode.SharpZipLib.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\JWT.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\log4net.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNet.SignalR.Core.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNet.SignalR.SystemWeb.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNetCore.Http.Abstractions.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNetCore.Http.Features.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNetCore.Mvc.Abstractions.dll |
| | |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Extensions.Primitives.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Net.Http.Headers.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Owin.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Owin.Host.SystemWeb.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Owin.Security.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Web.Infrastructure.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Newtonsoft.Json.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\NPOI.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\NPOI.OOXML.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\NPOI.OpenXml4Net.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\NPOI.OpenXmlFormats.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Owin.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Pipelines.Sockets.Unofficial.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\ServiceStack.Common.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\ServiceStack.Interfaces.dll |
| | |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\JWT.pdb |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\JWT.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\log4net.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNet.SignalR.Core.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNet.SignalR.SystemWeb.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNetCore.Http.Abstractions.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNetCore.Http.Features.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.AspNetCore.Mvc.Abstractions.xml |
| | |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Bcl.AsyncInterfaces.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Extensions.Primitives.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Net.Http.Headers.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Owin.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Owin.Host.SystemWeb.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.Owin.Security.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Newtonsoft.Json.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\NPOI.pdb |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\NPOI.xml |
| | |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\System.Web.WebPages.Razor.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Antlr3.Runtime.pdb |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\Microsoft.AspNet.SignalR.Core.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\Microsoft.AspNet.SignalR.SystemWeb.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\System.Net.Http.Formatting.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.Http.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.Http.WebHost.resources.dll |
| | |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Deployment.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Razor.resources.dll |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.AssemblyReference.cache |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CoreCompileInputs.cache |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CopyComplete |
| | | D:\æ°å¯è¿ªMES\VueWebApi\VueWebApi\obj\Release\VueWebApi.dll |
| | |
| | | <package id="Microsoft.AspNet.Mvc.zh-Hans" version="5.2.7" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.Razor.zh-Hans" version="3.2.7" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR.Core" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR.Core.zh-Hans" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR.JS" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR.SystemWeb.zh-Hans" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.SignalR.zh-Hans" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.Web.Optimization.zh-Hans" version="1.1.3" targetFramework="net461" /> |
| | | <package id="Microsoft.AspNet.WebApi" version="5.2.9" targetFramework="net461" /> |
| | |
| | | <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net461" /> |
| | | <package id="Microsoft.Extensions.Primitives" version="2.2.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Net.Http.Headers" version="2.2.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Owin" version="4.0.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Owin.Host.SystemWeb" version="4.0.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Owin.Host.SystemWeb.zh-Hans" version="4.0.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Owin.Security" version="4.0.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Owin.Security.zh-Hans" version="4.0.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Owin.zh-Hans" version="4.0.0" targetFramework="net461" /> |
| | | <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" /> |
| | | <package id="Modernizr" version="2.8.3" targetFramework="net461" /> |
| | | <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net461" /> |
| | | <package id="NPOI" version="2.5.6" targetFramework="net461" /> |
| | | <package id="Owin" version="1.0" targetFramework="net461" /> |
| | | <package id="Pipelines.Sockets.Unofficial" version="2.2.2" targetFramework="net461" /> |
| | | <package id="Portable.BouncyCastle" version="1.8.9" targetFramework="net461" /> |
| | | <package id="ServiceStack.Common" version="5.0.0" targetFramework="net461" /> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | Please see http://go.microsoft.com/fwlink/?LinkId=272764 for more information on using SignalR. |
| | | |
| | | Upgrading from 1.x to 2.0 |
| | | ------------------------- |
| | | Please see http://go.microsoft.com/fwlink/?LinkId=320578 for more information on how to |
| | | upgrade your SignalR 1.x application to 2.0. |
| | | |
| | | Mapping the Hubs connection |
| | | ---------------------------- |
| | | To enable SignalR in your application, create a class called Startup with the following: |
| | | |
| | | using Microsoft.Owin; |
| | | using Owin; |
| | | using MyWebApplication; |
| | | |
| | | namespace MyWebApplication |
| | | { |
| | | public class Startup |
| | | { |
| | | public void Configuration(IAppBuilder app) |
| | | { |
| | | app.MapSignalR(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | Getting Started |
| | | --------------- |
| | | See http://www.asp.net/signalr/overview/getting-started for more information on how to get started. |
| | | |
| | | Why does ~/signalr/hubs return 404 or Why do I get a JavaScript error: 'myhub is undefined'? |
| | | -------------------------------------------------------------------------------------------- |
| | | This issue is generally due to a missing or invalid script reference to the auto-generated Hub JavaScript proxy at '~/signalr/hubs'. |
| | | Please make sure that the Hub route is registered before any other routes in your application. |
| | | |
| | | In ASP.NET MVC 4 you can do the following: |
| | | |
| | | <script src="~/signalr/hubs"></script> |
| | | |
| | | If you're writing an ASP.NET MVC 3 application, make sure that you are using Url.Content for your script references: |
| | | |
| | | <script src="@Url.Content("~/signalr/hubs")"></script> |
| | | |
| | | If you're writing a regular ASP.NET application use ResolveClientUrl for your script references or register them via the ScriptManager |
| | | using a app root relative path (starting with a '~/'): |
| | | |
| | | <script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script> |
| | | |
| | | If the above still doesn't work, you may have an issue with routing and extensionless URLs. To fix this, ensure you have the latest |
| | | patches installed for IIS and ASP.NET. |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0"?> |
| | | <doc> |
| | | <assembly> |
| | | <name>Microsoft.AspNet.SignalR.Core</name> |
| | | </assembly> |
| | | <members> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager"> |
| | | <summary> |
| | | Default <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager"/> implementation. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager"/> class. |
| | | </summary> |
| | | <param name="resolver">The <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetConnectionContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetConnection(System.Type)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <param name="type">Type of the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext``2"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext``1(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IMemoryPool.AllocSegment(System.Int32)"> |
| | | <summary> |
| | | Acquires a sub-segment of a larger memory allocation. Used for async sends of write-behind |
| | | buffers to reduce number of array segments pinned |
| | | </summary> |
| | | <param name = "minimumSize">The smallest length of the ArraySegment.Count that may be returned</param> |
| | | <returns>An array segment which is a sub-block of a larger allocation</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IMemoryPool.FreeSegment(System.ArraySegment{System.Byte})"> |
| | | <summary> |
| | | Frees a sub-segment of a larger memory allocation produced by AllocSegment. The original ArraySegment |
| | | must be frees exactly once and must have the same offset and count that was returned by the Alloc. |
| | | If a segment is not freed it won't be re-used and has the same effect as a memory leak, so callers must be |
| | | implemented exactly correctly. |
| | | </summary> |
| | | <param name = "segment">The sub-block that was originally returned by a call to AllocSegment.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.IBinaryWriter"> |
| | | <summary> |
| | | Implemented on anything that has the ability to write raw binary data |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager"> |
| | | <summary> |
| | | Provides access to performance counters. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.Initialize(System.String,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Initializes the performance counters. |
| | | </summary> |
| | | <param name="instanceName">The host instance name.</param> |
| | | <param name="hostShutdownToken">The CancellationToken representing the host shutdown.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.LoadCounter(System.String,System.String,System.String,System.Boolean)"> |
| | | <summary> |
| | | Loads a performance counter. |
| | | </summary> |
| | | <param name="categoryName">The category name.</param> |
| | | <param name="counterName">The counter name.</param> |
| | | <param name="instanceName">The instance name.</param> |
| | | <param name="isReadOnly">Whether the counter is read-only.</param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsConnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Connect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsReconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Reconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsDisconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Disconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentForeverFrame"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using ForeverFrame transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentLongPolling"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using LongPolling transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentServerSentEvents"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using ServerSentEvents transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrentWebSockets"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using WebSockets transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by connections (server to client) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesSentTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by connections (server to client) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by connections (server to client) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ConnectionMessagesSentPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages sent by connections (client to server) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by subscribers since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by a subscribers per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutMessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by the scaleout message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesPublishedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages published to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusMessagesPublishedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages published to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusSubscribersCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the current number of subscribers to the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusSubscribersTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of subscribers to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusSubscribersPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of new subscribers to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusAllocatedWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers allocated to deliver messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusBusyWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers currently busy delivering messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.MessageBusTopicsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing representing the current number of topics in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsAllTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of all errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsAllPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of all errors processed per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubResolutionTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub resolution errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubResolutionPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub resolution errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubInvocationTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub invocation errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsHubInvocationPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub invocation errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsTransportTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of transport errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ErrorsTransportPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of transport errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutStreamCountTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutStreamCountOpen"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the open state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutStreamCountBuffering"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the buffering state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutErrorsTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of scaleout errors since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutErrorsPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of scaleout errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager.ScaleoutSendQueueLength"> |
| | | <summary> |
| | | Gets the performance counter representing the current scaleout send queue length. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager"> |
| | | <summary> |
| | | Manages performance counters using Windows performance counters. |
| | | </summary> |
| | | </member> |
| | | <member name="F:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.CategoryName"> |
| | | <summary> |
| | | The performance counter category name for SignalR counters. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.#ctor(Microsoft.AspNet.SignalR.Tracing.ITraceManager)"> |
| | | <summary> |
| | | Creates a new instance. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsConnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Connect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsReconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Reconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsDisconnected"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of connection Disconnect events since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentForeverFrame"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the ForeverFrame transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentLongPolling"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the LongPolling transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentServerSentEvents"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the ServerSentEvents transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrentWebSockets"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected using the WebSockets transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the number of connections currently connected. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the toal number of messages received by connections (server to client) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesSentTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages sent by connections (client to server) since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by connections (server to client) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ConnectionMessagesSentPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages sent by connections (client to server) per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesReceivedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages received by subscribers since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by a subscribers per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutMessageBusMessagesReceivedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages received by the scaleout message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesPublishedTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of messages published to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusMessagesPublishedPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of messages published to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusSubscribersCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing the current number of subscribers to the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusSubscribersTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of subscribers to the message bus since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusSubscribersPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of new subscribers to the message bus per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusAllocatedWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers allocated to deliver messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusBusyWorkers"> |
| | | <summary> |
| | | Gets the performance counter representing the number of workers currently busy delivering messages in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.MessageBusTopicsCurrent"> |
| | | <summary> |
| | | Gets the performance counter representing representing the current number of topics in the message bus. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsAllTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of all errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsAllPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of all errors processed per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubResolutionTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub resolution errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubResolutionPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub resolution errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubInvocationTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of hub invocation errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsHubInvocationPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of hub invocation errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsTransportTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of transport errors processed since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ErrorsTransportPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of transport errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutStreamCountTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutStreamCountOpen"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the open state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutStreamCountBuffering"> |
| | | <summary> |
| | | Gets the performance counter representing the number of logical streams in the currently configured scaleout message bus provider that are in the buffering state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutErrorsTotal"> |
| | | <summary> |
| | | Gets the performance counter representing the total number of scaleout errors since the application was started. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutErrorsPerSec"> |
| | | <summary> |
| | | Gets the performance counter representing the number of scaleout errors per second. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.ScaleoutSendQueueLength"> |
| | | <summary> |
| | | Gets the performance counter representing the current scaleout send queue length. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.PerformanceCounterManager.Initialize(System.String,System.Threading.CancellationToken)"> |
| | | <summary> |
| | | Initializes the performance counters. |
| | | </summary> |
| | | <param name="instanceName">The host instance name.</param> |
| | | <param name="hostShutdownToken">The CancellationToken representing the host shutdown.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.Disposer"> |
| | | <summary> |
| | | Helper class to manage disposing a resource at an arbirtary time |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.SafeCancellationTokenSource"> |
| | | <summary> |
| | | Thread safe cancellation token source. Allows the following: |
| | | - Cancel will no-op if the token is disposed. |
| | | - Dispose may be called after Cancel. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager"> |
| | | <summary> |
| | | Provides access to hubs and persistent connections references. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext``2"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></typeparam> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext``1(System.String)"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/>for the specified hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub</param> |
| | | <typeparam name="TClient">Interface implemented by the client proxy</typeparam> |
| | | <returns>a <see cref="T:Microsoft.AspNet.SignalR.IHubContext`1"/> for the specified hub</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetConnectionContext``1"> |
| | | <summary> |
| | | Returns a <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <typeparam name="T">Type of the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"> |
| | | <summary> |
| | | Minifies a string in a way that can be reversed by this instance of <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier"/>. |
| | | </summary> |
| | | <param name="value">The string to be minified</param> |
| | | <returns>A minified representation of the <paramref name="value"/> without the following characters:,|\</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Unminify(System.String)"> |
| | | <summary> |
| | | Reverses a <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> call that was executed at least once previously on this instance of |
| | | <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier"/> without any subsequent calls to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.RemoveUnminified(System.String)"/> sharing the |
| | | same argument as the <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> call that returned <paramref name="value"/>. |
| | | </summary> |
| | | <param name="value"> |
| | | A minified string that was returned by a previous call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/>. |
| | | </param> |
| | | <returns> |
| | | The argument of all previous calls to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> that returned <paramref name="value"/>. |
| | | If every call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> on this instance of <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier"/> has never |
| | | returned <paramref name="value"/> or if the most recent call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Minify(System.String)"/> that did |
| | | return <paramref name="value"/> was followed by a call to <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.RemoveUnminified(System.String)"/> sharing |
| | | the same argument, <see cref="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.Unminify(System.String)"/> may return null but must not throw. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier.RemoveUnminified(System.String)"> |
| | | <summary> |
| | | A call to this function indicates that any future attempt to unminify strings that were previously minified |
| | | from <paramref name="value"/> may be met with a null return value. This provides an opportunity clean up |
| | | any internal data structures that reference <paramref name="value"/>. |
| | | </summary> |
| | | <param name="value">The string that may have previously have been minified.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.UrlDecoder"> |
| | | <summary> |
| | | Helpers for decoding URI query components. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Infrastructure.AckSubscriber"> |
| | | <summary> |
| | | A singleton that subscribes to all ACKs sent over the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Messaging.IMessageBus"/> and |
| | | triggers any corresponding ACKs on the <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IAckHandler"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Configuration.ConfigurationExtensions.KeepAliveTimeout(Microsoft.AspNet.SignalR.Configuration.IConfigurationManager)"> |
| | | <summary> |
| | | The amount of time the client should wait without seeing a keep alive before trying to reconnect. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Configuration.ConfigurationExtensions.HeartbeatInterval(Microsoft.AspNet.SignalR.Configuration.IConfigurationManager)"> |
| | | <summary> |
| | | The interval between successively checking connection states. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Configuration.ConfigurationExtensions.TopicTtl(Microsoft.AspNet.SignalR.Configuration.IConfigurationManager)"> |
| | | <summary> |
| | | The amount of time a Topic should stay in memory after its last subscriber is removed. |
| | | </summary> |
| | | <param name="config"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager"> |
| | | <summary> |
| | | Provides access to server configuration. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.TransportConnectTimeout"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time a client should allow to connect before falling |
| | | back to another transport or failing. |
| | | The default value is 5 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.ConnectionTimeout"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time to leave a connection open before timing out. |
| | | The default value is 110 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time to wait after a connection goes away before raising the disconnect event. |
| | | The default value is 30 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.KeepAlive"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing the amount of time between send keep alive messages. |
| | | If enabled, this value must be at least two seconds. Set to null to disable. |
| | | The default value is 10 seconds. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DefaultMessageBufferSize"> |
| | | <summary> |
| | | Gets or sets the number of messages to buffer for a specific signal. |
| | | The default value is 1000. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.MaxIncomingWebSocketMessageSize"> |
| | | <summary> |
| | | Gets or sets the maximum size in bytes of messages sent from client to the server via WebSockets. |
| | | Set to null to disable this limit. |
| | | The default value is 65536 or 64 KB. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.LongPollDelay"> |
| | | <summary> |
| | | Gets or sets a <see cref="T:System.TimeSpan"/> representing tell the client to wait before restablishing a |
| | | long poll connection after data is sent from the server. |
| | | The default value is 0. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.MaxScaleoutMappingsPerStream"> |
| | | <summary> |
| | | Gets or sets the maximum number of scaleout mappings per scaleout stream stored on the server. |
| | | The default value is 65535 |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionConfiguration.Resolver"> |
| | | <summary> |
| | | The dependency resolver to use for the hub connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionConfiguration.EnableJSONP"> |
| | | <summary> |
| | | Gets of sets a boolean that determines if JSONP is enabled. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.IResponse"> |
| | | <summary> |
| | | Represents a connection to the client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IResponse.CancellationToken"> |
| | | <summary> |
| | | Gets a cancellation token that represents the client's lifetime. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IResponse.StatusCode"> |
| | | <summary> |
| | | Gets or sets the status code of the response. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IResponse.ContentType"> |
| | | <summary> |
| | | Gets or sets the content type of the response. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.IResponse.Write(System.ArraySegment{System.Byte})"> |
| | | <summary> |
| | | Writes buffered data. |
| | | </summary> |
| | | <param name="data">The data to write to the buffer.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.IResponse.Flush"> |
| | | <summary> |
| | | Flushes the buffered response to the client. |
| | | </summary> |
| | | <returns>A task that represents when the data has been flushed.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.IWebSocket"> |
| | | <summary> |
| | | Represents a web socket. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IWebSocket.OnMessage"> |
| | | <summary> |
| | | Invoked when data is sent over the websocket |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IWebSocket.OnClose"> |
| | | <summary> |
| | | Invoked when the websocket closes |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hosting.IWebSocket.OnError"> |
| | | <summary> |
| | | Invoked when there is an error |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.IWebSocket.Send(System.ArraySegment{System.Byte})"> |
| | | <summary> |
| | | Sends data over the websocket. |
| | | </summary> |
| | | <param name="message">The value to send.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that represents the send is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.ResponseExtensions"> |
| | | <summary> |
| | | Extension methods for <see cref="T:Microsoft.AspNet.SignalR.Hosting.IResponse"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.ResponseExtensions.End(Microsoft.AspNet.SignalR.Hosting.IResponse,System.String)"> |
| | | <summary> |
| | | Closes the connection to a client with optional data. |
| | | </summary> |
| | | <param name="response">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.IResponse"/>.</param> |
| | | <param name="data">The data to write to the connection.</param> |
| | | <returns>A task that represents when the connection is closed.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory"> |
| | | <summary> |
| | | Responsible for creating <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> instances. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Creates a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory"/> class. |
| | | </summary> |
| | | <param name="resolver">The dependency resolver to use for when creating the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hosting.PersistentConnectionFactory.CreateInstance(System.Type)"> |
| | | <summary> |
| | | Creates an instance of the specified type using the dependency resolver or the type's default constructor. |
| | | </summary> |
| | | <param name="connectionType">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to create.</param> |
| | | <returns>An instance of a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. </returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubBase"> |
| | | <summary> |
| | | Provides methods that communicate with SignalR connections that connected to a <see cref="T:Microsoft.AspNet.SignalR.Hub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubBase.Microsoft#AspNet#SignalR#Hubs#IHub#Clients"> |
| | | <summary> |
| | | Gets a dynamic object that represents all clients connected to this hub (not hub instance). |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubBase.Context"> |
| | | <summary> |
| | | Provides information about the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubBase.Groups"> |
| | | <summary> |
| | | The group manager for this hub instance. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubBase.OnDisconnected(System.Boolean)"> |
| | | <summary> |
| | | Called when a connection disconnects from this hub gracefully or due to a timeout. |
| | | </summary> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the connection has been lost for longer than the |
| | | <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"/>. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubBase.OnConnected"> |
| | | <summary> |
| | | Called when the connection connects to this hub instance. |
| | | </summary> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubBase.OnReconnected"> |
| | | <summary> |
| | | Called when the connection reconnects to this hub instance. |
| | | </summary> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.AllExcept(System.String[])"> |
| | | <summary> |
| | | Returns a dynamic representation of all clients except the calling client ones specified. |
| | | </summary> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A dynamic representation of all clients except the calling client ones specified.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Client(System.String)"> |
| | | <summary> |
| | | Returns a dynamic representation of the connection with the specified connectionid. |
| | | </summary> |
| | | <param name="connectionId">The connection id</param> |
| | | <returns>A dynamic representation of the specified client.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Clients(System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Returns a dynamic representation of the connections with the specified connectionids. |
| | | </summary> |
| | | <param name="connectionIds">The connection ids.</param> |
| | | <returns>A dynamic representation of the specified clients.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Group(System.String,System.String[])"> |
| | | <summary> |
| | | Returns a dynamic representation of the specified group. |
| | | </summary> |
| | | <param name="groupName">The name of the group</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A dynamic representation of the specified group.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContextBase.Groups(System.Collections.Generic.IList{System.String},System.String[])"> |
| | | <summary> |
| | | Returns a dynamic representation of the specified groups. |
| | | </summary> |
| | | <param name="groupNames">The names of the groups.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A dynamic representation of the specified groups.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubConnectionContext`1"> |
| | | <summary> |
| | | Encapsulates all information about a SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ExceptionContext.Error"> |
| | | <summary> |
| | | The exception to be sent to the calling client. |
| | | This will be overridden by a generic Exception unless Error is a <see cref="T:Microsoft.AspNet.SignalR.HubException"/> |
| | | or <see cref="P:Microsoft.AspNet.SignalR.HubConfiguration.EnableDetailedErrors"/> is set to true. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ExceptionContext.Result"> |
| | | <summary> |
| | | The value to return in lieu of throwing Error. Whenever Result is set, Error will be set to null. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubCallerConnectionContext`1"> |
| | | <summary> |
| | | Encapsulates all information about an individual SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"> |
| | | <summary> |
| | | Encapsulates all information about an individual SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.#ctor"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.#ctor(Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker,Microsoft.AspNet.SignalR.IConnection,System.String,System.String,Microsoft.AspNet.SignalR.Hubs.StateChangeTracker)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"/>. |
| | | </summary> |
| | | <param name="pipelineInvoker">The pipeline invoker.</param> |
| | | <param name="connection">The connection.</param> |
| | | <param name="hubName">The hub name.</param> |
| | | <param name="connectionId">The connection id.</param> |
| | | <param name="tracker">The connection hub state.</param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.Others"> |
| | | <summary> |
| | | All connected clients except the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.Caller"> |
| | | <summary> |
| | | Represents the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.CallerState"> |
| | | <summary> |
| | | Represents the calling client's state. This should be used when the state is innaccessible |
| | | via the <see cref="P:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.Caller"/> property (such as in VB.NET or in typed Hubs). |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.OthersInGroup(System.String)"> |
| | | <summary> |
| | | Returns a dynamic representation of all clients in a group except the calling client. |
| | | </summary> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A dynamic representation of all clients in a group except the calling client.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext.OthersInGroups(System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Returns a dynamic representation of all clients in the specified groups except the calling client. |
| | | </summary> |
| | | <param name="groupNames">The name of the groups</param> |
| | | <returns>A dynamic representation of all clients in a group except the calling client.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"> |
| | | <summary> |
| | | This module is added the the HubPipeline by default. |
| | | |
| | | Hub level attributes that implement <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"/> such as <see cref="T:Microsoft.AspNet.SignalR.AuthorizeAttribute"/> are applied to determine |
| | | whether to allow potential clients to receive messages sent from that hub using a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubContext"/> or a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubConnectionContext"/> |
| | | All applicable hub attributes must allow hub connection for the connection to be authorized. |
| | | |
| | | Hub and method level attributes that implement <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"/> such as <see cref="T:Microsoft.AspNet.SignalR.AuthorizeAttribute"/> are applied |
| | | to determine whether to allow callers to invoke hub methods. |
| | | All applicable hub level AND method level attributes must allow hub method invocation for the invocation to be authorized. |
| | | |
| | | Optionally, this module may be instantiated with <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"/> and <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"/> |
| | | authorizers that will be applied globally to all hubs and hub methods. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation"> |
| | | <summary> |
| | | A description of a client-side hub method invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.Hub"> |
| | | <summary> |
| | | The name of the hub that the method being invoked belongs to. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.Method"> |
| | | <summary> |
| | | The name of the client-side hub method be invoked. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.Args"> |
| | | <summary> |
| | | The argument list the client-side hub method will be called with. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ClientHubInvocation.State"> |
| | | <summary> |
| | | A key-value store representing the hub state on the server that has changed since the last time the hub |
| | | state was sent to the client. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule"> |
| | | <summary> |
| | | Common base class to simplify the implementation of IHubPipelineModules. |
| | | A module can intercept and customize various stages of hub processing such as connecting, reconnecting, disconnecting, |
| | | invoking server-side hub methods, invoking client-side hub methods, authorizing hub clients and rejoining hub groups. |
| | | A module can be activated by calling <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"/>. |
| | | The combined modules added to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> are invoked via the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"/> |
| | | interface. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"> |
| | | <summary> |
| | | Wraps a function that invokes a server-side hub method. Even if a client has not been authorized to connect |
| | | to a hub, it will still be authorized to invoke server-side methods on that hub unless it is prevented in |
| | | <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"/> by not executing the invoke parameter. |
| | | </summary> |
| | | <param name="invoke">A function that invokes a server-side hub method.</param> |
| | | <returns>A wrapped function that invokes a server-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client connects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnConnected method being invoked. |
| | | </summary> |
| | | <param name="connect">A function to be called when a client connects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client connects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildReconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnReconnected method being invoked. |
| | | </summary> |
| | | <param name="reconnect">A function to be called when a client reconnects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client reconnects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildDisconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client was connected to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnDisconnected method being invoked. |
| | | </summary> |
| | | <param name="disconnect"> |
| | | <para>A task-returning function to be called when a client disconnects from a hub.</para> |
| | | <para>This function takes two parameters:</para> |
| | | <para>1. The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> is being disconnected from.</para> |
| | | <para>2. A boolean, stopCalled, that is true if stop was called on the client and false if the client timed out. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout.</para> |
| | | </param> |
| | | <returns>A wrapped function to be called when a client disconnects from a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildAuthorizeConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Boolean})"> |
| | | <summary> |
| | | Wraps a function to be called before a client subscribes to signals belonging to the hub described by the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. By default, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> will look for attributes on the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> to help determine if the client is authorized to subscribe to method invocations for the |
| | | described hub. |
| | | The function returns true if the client is authorized to subscribe to client-side hub method |
| | | invocations; false, otherwise. |
| | | </summary> |
| | | <param name="authorizeConnect"> |
| | | A function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </param> |
| | | <returns> |
| | | A wrapped function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildRejoiningGroups(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String}})"> |
| | | <summary> |
| | | Wraps a function that determines which of the groups belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/> |
| | | the client should be allowed to rejoin. |
| | | By default, clients will rejoin all the groups they were in prior to reconnecting. |
| | | </summary> |
| | | <param name="rejoiningGroups">A function that determines which groups the client should be allowed to rejoin.</param> |
| | | <returns>A wrapped function that determines which groups the client should be allowed to rejoin.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.BuildOutgoing(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that invokes a client-side hub method. |
| | | </summary> |
| | | <param name="send">A function that invokes a client-side hub method.</param> |
| | | <returns>A wrapped function that invokes a client-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeAuthorizeConnect(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | This method is called before the AuthorizeConnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> |
| | | are executed. If this returns false, then those later-added modules will not run and the client will not be allowed |
| | | to subscribe to client-side invocations of methods belonging to the hub defined by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. |
| | | </summary> |
| | | <param name="hubDescriptor">A description of the hub the client is trying to subscribe to.</param> |
| | | <param name="request">The connect request of the client trying to subscribe to the hub.</param> |
| | | <returns>true, if the client is authorized to connect to the hub, false otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeConnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called before the connect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"/> method will |
| | | not be run. |
| | | </summary> |
| | | <param name="hub">The hub the client has connected to.</param> |
| | | <returns> |
| | | true, if the connect components of later added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"/> method should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterConnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called after the connect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed and after <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"/> is executed, if at all. |
| | | </summary> |
| | | <param name="hub">The hub the client has connected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeReconnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called before the reconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"/> method will |
| | | not be run. |
| | | </summary> |
| | | <param name="hub">The hub the client has reconnected to.</param> |
| | | <returns> |
| | | true, if the reconnect components of later added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"/> method should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterReconnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | This method is called after the reconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed and after <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"/> is executed, if at all. |
| | | </summary> |
| | | <param name="hub">The hub the client has reconnected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeOutgoing(Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext)"> |
| | | <summary> |
| | | This method is called before the outgoing components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the client-side hub method invocation(s) will not |
| | | be executed. |
| | | </summary> |
| | | <param name="context">A description of the client-side hub method invocation.</param> |
| | | <returns> |
| | | true, if the outgoing components of later added modules and the client-side hub method invocation(s) should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterOutgoing(Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext)"> |
| | | <summary> |
| | | This method is called after the outgoing components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. This does not mean that all the clients have received the hub method invocation, but it does indicate indicate |
| | | a hub invocation message has successfully been published to a message bus. |
| | | </summary> |
| | | <param name="context">A description of the client-side hub method invocation.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeDisconnect(Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean)"> |
| | | <summary> |
| | | This method is called before the disconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"/> method will |
| | | not be run. |
| | | </summary> |
| | | <param name="hub">The hub the client has disconnected from.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the client timed out. Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | <returns> |
| | | true, if the disconnect components of later added modules and the <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"/> method should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterDisconnect(Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean)"> |
| | | <summary> |
| | | This method is called after the disconnect components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed and after <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"/> is executed, if at all. |
| | | </summary> |
| | | <param name="hub">The hub the client has disconnected from.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the client timed out. Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeIncoming(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | This method is called before the incoming components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> are |
| | | executed. If this returns false, then those later-added modules and the server-side hub method invocation will not |
| | | be executed. Even if a client has not been authorized to connect to a hub, it will still be authorized to invoke |
| | | server-side methods on that hub unless it is prevented in <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"/> by not |
| | | executing the invoke parameter or prevented in <see cref="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnBeforeIncoming(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"/> by returning false. |
| | | </summary> |
| | | <param name="context">A description of the server-side hub method invocation.</param> |
| | | <returns> |
| | | true, if the incoming components of later added modules and the server-side hub method invocation should be executed; |
| | | false, otherwise. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnAfterIncoming(System.Object,Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | This method is called after the incoming components of any modules added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> |
| | | and the server-side hub method have completed execution. |
| | | </summary> |
| | | <param name="result">The return value of the server-side hub method</param> |
| | | <param name="context">A description of the server-side hub method invocation.</param> |
| | | <returns>The possibly new or updated return value of the server-side hub method</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.OnIncomingError(Microsoft.AspNet.SignalR.Hubs.ExceptionContext,Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | This is called when an uncaught exception is thrown by a server-side hub method or the incoming component of a |
| | | module added later to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/>. Observing the exception using this method will not prevent |
| | | it from bubbling up to other modules. |
| | | </summary> |
| | | <param name="exceptionContext"> |
| | | Represents the exception that was thrown during the server-side invocation. |
| | | It is possible to change the error or set a result using this context. |
| | | </param> |
| | | <param name="invokerContext">A description of the server-side hub method invocation.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"> |
| | | <summary> |
| | | Interface to be implemented by <see cref="T:System.Attribute"/>s that can authorize client to connect to a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection.AuthorizeHubConnection(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Given a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubCallerContext"/>, determine whether client is authorized to connect to <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <param name="hubDescriptor">Description of the hub client is attempting to connect to.</param> |
| | | <param name="request">The connection request from the client.</param> |
| | | <returns>true if the caller is authorized to connect to the hub; otherwise, false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"> |
| | | <summary> |
| | | Interface to be implemented by <see cref="T:System.Attribute"/>s that can authorize the invocation of <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> methods. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation.AuthorizeHubMethodInvocation(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Boolean)"> |
| | | <summary> |
| | | Given a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"/>, determine whether client is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method. |
| | | </summary> |
| | | <param name="hubIncomingInvokerContext">An <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"/> providing details regarding the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method invocation.</param> |
| | | <param name="appliesToMethod">Indicates whether the interface instance is an attribute applied directly to a method.</param> |
| | | <returns>true if the caller is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method; otherwise, false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext"> |
| | | <summary> |
| | | A description of a client-side hub method invocation originating from the server. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Connection"> |
| | | <summary> |
| | | The <see cref="T:Microsoft.AspNet.SignalR.IConnection"/>, if any, corresponding to the client that invoked the server-side hub method |
| | | that is invoking the client-side hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Invocation"> |
| | | <summary> |
| | | A description of the method call to be made on the client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Signal"> |
| | | <summary> |
| | | The signal (ConnectionId, hub type name or hub type name + "." + group name) belonging to clients that |
| | | receive the method invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Signals"> |
| | | <summary> |
| | | The signals (ConnectionId, hub type name or hub type name + "." + group name) belonging to clients that |
| | | receive the method invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.ExcludedSignals"> |
| | | <summary> |
| | | The signals (ConnectionId, hub type name or hub type name + "." + group name) belonging to clients that should |
| | | not receive the method invocation regardless of the <see cref="P:Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext.Signal"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"> |
| | | <summary> |
| | | Implementations of this interface are responsible for executing operation required to complete various stages |
| | | hub processing such as connecting, reconnecting, disconnecting, invoking server-side hub methods, invoking |
| | | client-side hub methods, authorizing hub clients and rejoining hub groups. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Invoke(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext)"> |
| | | <summary> |
| | | Invokes a server-side hub method. |
| | | </summary> |
| | | <param name="context">A description of the server-side hub method invocation.</param> |
| | | <returns>An asynchronous operation giving the return value of the server-side hub method invocation.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Send(Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext)"> |
| | | <summary> |
| | | Invokes a client-side hub method. |
| | | </summary> |
| | | <param name="context">A description of the client-side hub method invocation.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Connect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | To be called when a client connects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client |
| | | connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s OnConnected method being invoked. |
| | | </summary> |
| | | <param name="hub">A <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client is connected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Reconnect(Microsoft.AspNet.SignalR.Hubs.IHub)"> |
| | | <summary> |
| | | To be called when a client reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client |
| | | connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s OnReconnected method being invoked. |
| | | </summary> |
| | | <param name="hub">A <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client is reconnected to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.Disconnect(Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean)"> |
| | | <summary> |
| | | To be called when a client disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client |
| | | was connected to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s OnDisconnected method being invoked. |
| | | </summary> |
| | | <param name="hub">A <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client was disconnected from.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the client timed out. Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.AuthorizeConnect(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | To be called before a client subscribes to signals belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. |
| | | By default, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> will look for attributes on the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> to help determine if |
| | | the client is authorized to subscribe to method invocations for the described hub. |
| | | </summary> |
| | | <param name="hubDescriptor">A description of the hub the client is attempting to connect to.</param> |
| | | <param name="request"> |
| | | The connect request being made by the client which should include the client's |
| | | <see cref="T:System.Security.Principal.IPrincipal"/> User. |
| | | </param> |
| | | <returns>true, if the client is authorized to subscribe to client-side hub method invocations; false, otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker.RejoiningGroups(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | This method determines which of the groups belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/> the client should be |
| | | allowed to rejoin. |
| | | By default, clients that are reconnecting to the server will be removed from all groups they may have previously been a member of, |
| | | because untrusted clients may claim to be a member of groups they were never authorized to join. |
| | | </summary> |
| | | <param name="hubDescriptor">A description of the hub for which the client is attempting to rejoin groups.</param> |
| | | <param name="request">The reconnect request being made by the client that is attempting to rejoin groups.</param> |
| | | <param name="groups"> |
| | | The list of groups belonging to the relevant hub that the client claims to have been a member of before the reconnect. |
| | | </param> |
| | | <returns>A list of groups the client is allowed to rejoin.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubResponse"> |
| | | <summary> |
| | | The response returned from an incoming hub request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.State"> |
| | | <summary> |
| | | The changes made the the round tripped state. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Result"> |
| | | <summary> |
| | | The result of the invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Id"> |
| | | <summary> |
| | | The id of the operation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Progress"> |
| | | <summary> |
| | | The progress update of the invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.IsHubException"> |
| | | <summary> |
| | | Indicates whether the Error is a see <see cref="T:Microsoft.AspNet.SignalR.HubException"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.Error"> |
| | | <summary> |
| | | The exception that occurs as a result of invoking the hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.StackTrace"> |
| | | <summary> |
| | | The stack trace of the exception that occurs as a result of invoking the hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubResponse.ErrorData"> |
| | | <summary> |
| | | Extra error data contained in the <see cref="T:Microsoft.AspNet.SignalR.HubException"/> |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IClientProxy"> |
| | | <summary> |
| | | A server side proxy for the client side hub. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IClientProxy.Invoke(System.String,System.Object[])"> |
| | | <summary> |
| | | Invokes a method on the connection(s) represented by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IClientProxy"/> instance. |
| | | </summary> |
| | | <param name="method">name of the method to invoke</param> |
| | | <param name="args">argumetns to pass to the client</param> |
| | | <returns>A task that represents when the data has been sent to the client.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubRequestParser"> |
| | | <summary> |
| | | Handles parsing incoming requests through the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubRequestParser.Parse(System.String,Newtonsoft.Json.JsonSerializer)"> |
| | | <summary> |
| | | Parses the incoming hub payload into a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubRequest"/>. |
| | | </summary> |
| | | <param name="data">The raw hub payload.</param> |
| | | <param name="serializer">The JsonSerializer used to parse the data.</param> |
| | | <returns>The resulting <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubRequest"/>.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.Descriptor.Name"> |
| | | <summary> |
| | | Name of Descriptor. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.Descriptor.NameSpecified"> |
| | | <summary> |
| | | Flags whether the name was specified. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.StateChangeTracker"> |
| | | <summary> |
| | | A change tracking dictionary. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"> |
| | | <summary> |
| | | A description of a server-side hub method invocation originating from a client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.Hub"> |
| | | <summary> |
| | | A hub instance that contains the invoked method as a member. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.MethodDescriptor"> |
| | | <summary> |
| | | A description of the method being invoked by the client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.Args"> |
| | | <summary> |
| | | The arguments to be passed to the invoked method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext.StateTracker"> |
| | | <summary> |
| | | A key-value store representing the hub state on the client at the time of the invocation. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"> |
| | | <summary> |
| | | A collection of modules that can intercept and customize various stages of hub processing such as connecting, |
| | | reconnecting, disconnecting, invoking server-side hub methods, invoking client-side hub methods, authorizing |
| | | hub clients and rejoining hub groups. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"> |
| | | <summary> |
| | | Adds an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule"/> to the hub pipeline. Modules added to the pipeline first will wrap |
| | | modules that are added to the pipeline later. All modules must be added to the pipeline before any methods |
| | | on the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"/> are invoked. |
| | | </summary> |
| | | <param name="pipelineModule"> |
| | | A module that may intercept and customize various stages of hub processing such as connecting, |
| | | reconnecting, disconnecting, invoking server-side hub methods, invoking client-side hub methods, authorizing |
| | | hub clients and rejoining hub groups. |
| | | </param> |
| | | <returns> |
| | | The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline"/> itself with the newly added module allowing |
| | | <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"/> calls to be chained. |
| | | This method mutates the pipeline it is invoked on so it is not necessary to store its result. |
| | | </returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule"> |
| | | <summary> |
| | | An <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule"/> can intercept and customize various stages of hub processing such as connecting, |
| | | reconnecting, disconnecting, invoking server-side hub methods, invoking client-side hub methods, authorizing hub |
| | | clients and rejoining hub groups. |
| | | Modules can be be activated by calling <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipeline.AddModule(Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule)"/>. |
| | | The combined modules added to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> are invoked via the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipelineInvoker"/> |
| | | interface. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"> |
| | | <summary> |
| | | Wraps a function that invokes a server-side hub method. Even if a client has not been authorized to connect |
| | | to a hub, it will still be authorized to invoke server-side methods on that hub unless it is prevented in |
| | | <see cref="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildIncoming(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Threading.Tasks.Task{System.Object}})"/> by not executing the invoke parameter. |
| | | </summary> |
| | | <param name="invoke">A function that invokes a server-side hub method.</param> |
| | | <returns>A wrapped function that invokes a server-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildOutgoing(System.Func{Microsoft.AspNet.SignalR.Hubs.IHubOutgoingInvokerContext,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that invokes a client-side hub method. |
| | | </summary> |
| | | <param name="send">A function that invokes a client-side hub method.</param> |
| | | <returns>A wrapped function that invokes a client-side hub method.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client connects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnConnected method being invoked. |
| | | </summary> |
| | | <param name="connect">A function to be called when a client connects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client connects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildReconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client connects to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnReconnected method being invoked. |
| | | </summary> |
| | | <param name="reconnect">A function to be called when a client reconnects to a hub.</param> |
| | | <returns>A wrapped function to be called when a client reconnects to a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildDisconnect(System.Func{Microsoft.AspNet.SignalR.Hubs.IHub,System.Boolean,System.Threading.Tasks.Task})"> |
| | | <summary> |
| | | Wraps a function that is called when a client disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> for each |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> the client was connected to. By default, this results in the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>'s |
| | | OnDisconnected method being invoked. |
| | | </summary> |
| | | <param name="disconnect"> |
| | | <para>A task-returning function to be called when a client disconnects from a hub.</para> |
| | | <para>This function takes two parameters:</para> |
| | | <para>1. The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> is being disconnected from.</para> |
| | | <para>2. A boolean, stopCalled, that is true if stop was called on the client and false if the client timed out. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout.</para> |
| | | </param> |
| | | <returns>A wrapped function to be called when a client disconnects from a hub.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildAuthorizeConnect(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Boolean})"> |
| | | <summary> |
| | | Wraps a function to be called before a client subscribes to signals belonging to the hub described by the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/>. By default, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> will look for attributes on the |
| | | <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> to help determine if the client is authorized to subscribe to method invocations for the |
| | | described hub. |
| | | The function returns true if the client is authorized to subscribe to client-side hub method |
| | | invocations; false, otherwise. |
| | | </summary> |
| | | <param name="authorizeConnect"> |
| | | A function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </param> |
| | | <returns> |
| | | A wrapped function that dictates whether or not the client is authorized to connect to the described Hub. |
| | | </returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubPipelineModule.BuildRejoiningGroups(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String}})"> |
| | | <summary> |
| | | Wraps a function that determines which of the groups belonging to the hub described by the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"/> |
| | | the client should be allowed to rejoin. |
| | | By default, clients will rejoin all the groups they were in prior to reconnecting. |
| | | </summary> |
| | | <param name="rejoiningGroups">A function that determines which groups the client should be allowed to rejoin.</param> |
| | | <returns>A wrapped function that determines which groups the client should be allowed to rejoin.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.DefaultParameterResolver.ResolveParameter(Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor,Microsoft.AspNet.SignalR.Json.IJsonValue)"> |
| | | <summary> |
| | | Resolves a parameter value based on the provided object. |
| | | </summary> |
| | | <param name="descriptor">Parameter descriptor.</param> |
| | | <param name="value">Value to resolve the parameter value from.</param> |
| | | <returns>The parameter value.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.DefaultParameterResolver.ResolveMethodParameters(Microsoft.AspNet.SignalR.Hubs.MethodDescriptor,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Resolves method parameter values based on provided objects. |
| | | </summary> |
| | | <param name="method">Method descriptor.</param> |
| | | <param name="values">List of values to resolve parameter values from.</param> |
| | | <returns>Array of parameter values.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IParameterResolver"> |
| | | <summary> |
| | | Describes a parameter resolver for resolving parameter-matching values based on provided information. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IParameterResolver.ResolveMethodParameters(Microsoft.AspNet.SignalR.Hubs.MethodDescriptor,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Resolves method parameter values based on provided objects. |
| | | </summary> |
| | | <param name="method">Method descriptor.</param> |
| | | <param name="values">List of values to resolve parameter values from.</param> |
| | | <returns>Array of parameter values.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor"> |
| | | <summary> |
| | | Holds information about a single hub method parameter. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor.Name"> |
| | | <summary> |
| | | Parameter name. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.ParameterDescriptor.ParameterType"> |
| | | <summary> |
| | | Parameter type. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.ReflectedMethodDescriptorProvider.FetchMethodsFor(Microsoft.AspNet.SignalR.Hubs.HubDescriptor)"> |
| | | <summary> |
| | | Retrieves an existing dictionary of all available methods for a given hub from cache. |
| | | If cache entry does not exist - it is created automatically by BuildMethodCacheFor. |
| | | </summary> |
| | | <param name="hub"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.ReflectedMethodDescriptorProvider.BuildMethodCacheFor(Microsoft.AspNet.SignalR.Hubs.HubDescriptor)"> |
| | | <summary> |
| | | Builds a dictionary of all possible methods on a given hub. |
| | | Single entry contains a collection of available overloads for a given method name (key). |
| | | This dictionary is being cached afterwards. |
| | | </summary> |
| | | <param name="hub">Hub to build cache for</param> |
| | | <returns>Dictionary of available methods</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.ReflectedMethodDescriptorProvider.TryGetMethod(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,System.String,Microsoft.AspNet.SignalR.Hubs.MethodDescriptor@,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Searches the specified <paramref name="hub">Hub</paramref> for the specified <paramref name="method"/>. |
| | | </summary> |
| | | <remarks> |
| | | In the case that there are multiple overloads of the specified <paramref name="method"/>, the <paramref name="parameters">parameter set</paramref> helps determine exactly which instance of the overload should be resolved. |
| | | If there are multiple overloads found with the same number of matching parameters, none of the methods will be returned because it is not possible to determine which overload of the method was intended to be resolved. |
| | | </remarks> |
| | | <param name="hub">Hub to search for the specified <paramref name="method"/> on.</param> |
| | | <param name="method">The method name to search for.</param> |
| | | <param name="descriptor">If successful, the <see cref="T:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor"/> that was resolved.</param> |
| | | <param name="parameters">The set of parameters that will be used to help locate a specific overload of the specified <paramref name="method"/>.</param> |
| | | <returns>True if the method matching the name/parameter set is found on the hub, otherwise false.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubDescriptor"> |
| | | <summary> |
| | | Holds information about a single hub. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubDescriptor.HubType"> |
| | | <summary> |
| | | Hub type. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IMethodDescriptorProvider"> |
| | | <summary> |
| | | Describes a hub method provider that builds a collection of available methods on a given hub. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IMethodDescriptorProvider.GetMethods(Microsoft.AspNet.SignalR.Hubs.HubDescriptor)"> |
| | | <summary> |
| | | Retrieve all methods on a given hub. |
| | | </summary> |
| | | <param name="hub">Hub descriptor object.</param> |
| | | <returns>Available methods.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IMethodDescriptorProvider.TryGetMethod(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,System.String,Microsoft.AspNet.SignalR.Hubs.MethodDescriptor@,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Tries to retrieve a method. |
| | | </summary> |
| | | <param name="hub">Hub descriptor object</param> |
| | | <param name="method">Name of the method.</param> |
| | | <param name="descriptor">Descriptor of the method, if found. Null otherwise.</param> |
| | | <param name="parameters">Method parameters to match.</param> |
| | | <returns>True, if a method has been found.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubManager"> |
| | | <summary> |
| | | Describes a hub manager - main point in the whole hub and method lookup process. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHub(System.String)"> |
| | | <summary> |
| | | Retrieves a single hub descriptor. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <returns>Hub descriptor, if found. Null, otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHubs(System.Func{Microsoft.AspNet.SignalR.Hubs.HubDescriptor,System.Boolean})"> |
| | | <summary> |
| | | Retrieves all available hubs matching the given predicate. |
| | | </summary> |
| | | <returns>List of hub descriptors.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.ResolveHub(System.String)"> |
| | | <summary> |
| | | Resolves a given hub name to a concrete object. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <returns>Hub implementation instance, if found. Null otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.ResolveHubs"> |
| | | <summary> |
| | | Resolves all available hubs to their concrete objects. |
| | | </summary> |
| | | <returns>List of hub instances.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHubMethod(System.String,System.String,System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Json.IJsonValue})"> |
| | | <summary> |
| | | Retrieves a method with a given name on a given hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <param name="method">Name of the method to find.</param> |
| | | <param name="parameters">Method parameters to match.</param> |
| | | <returns>Descriptor of the method, if found. Null otherwise.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubManager.GetHubMethods(System.String,System.Func{Microsoft.AspNet.SignalR.Hubs.MethodDescriptor,System.Boolean})"> |
| | | <summary> |
| | | Gets all methods available to call on a given hub. |
| | | </summary> |
| | | <param name="hubName">Name of the hub,</param> |
| | | <param name="predicate">Optional predicate for filtering results.</param> |
| | | <returns>List of available methods.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor"> |
| | | <summary> |
| | | Holds information about a single hub method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.ReturnType"> |
| | | <summary> |
| | | The return type of this method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Hub"> |
| | | <summary> |
| | | Hub descriptor object, target to this method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Parameters"> |
| | | <summary> |
| | | Available method parameters. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Invoker"> |
| | | <summary> |
| | | Method invocation delegate. |
| | | Takes a target hub and an array of invocation arguments as it's arguments. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.MethodDescriptor.Attributes"> |
| | | <summary> |
| | | Attributes attached to this method. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHub.Context"> |
| | | <summary> |
| | | Gets a <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubCallerContext"/>. Which contains information about the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHub.Clients"> |
| | | <summary> |
| | | Gets a dynamic object that represents all clients connected to this hub (not hub instance). |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.IHub.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> the hub instance. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnConnected"> |
| | | <summary> |
| | | Called when a new connection is made to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnReconnected"> |
| | | <summary> |
| | | Called when a connection reconnects to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> after a timeout. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHub.OnDisconnected(System.Boolean)"> |
| | | <summary> |
| | | Called when a connection disconnects from the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> gracefully or due to a timeout. |
| | | </summary> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the connection has been lost for longer than the |
| | | <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"/>. |
| | | Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. |
| | | </param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.ConnectionId"> |
| | | <summary> |
| | | Gets the connection id of the calling client. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.RequestCookies"> |
| | | <summary> |
| | | Gets the cookies for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.Headers"> |
| | | <summary> |
| | | Gets the headers for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.QueryString"> |
| | | <summary> |
| | | Gets the querystring for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.User"> |
| | | <summary> |
| | | Gets the <see cref="T:System.Security.Principal.IPrincipal"/> for the request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.Request"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current HTTP request. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubCallerContext.#ctor"> |
| | | <summary> |
| | | This constructor is only intended to enable mocking of the class. Use of this constructor |
| | | for other purposes may result in unexpected behavior. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"> |
| | | <summary> |
| | | Handles all communication over the hubs persistent connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubDispatcher.#ctor(Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Initializes an instance of the <see cref="T:Microsoft.AspNet.SignalR.Hubs.HubDispatcher"/> class. |
| | | </summary> |
| | | <param name="configuration">Configuration settings determining whether to enable JS proxies and provide clients with detailed hub errors.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.HubDispatcher.OnReceived(Microsoft.AspNet.SignalR.IRequest,System.String,System.String)"> |
| | | <summary> |
| | | Processes the hub's incoming method calls. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hubs.IHubDescriptorProvider"> |
| | | <summary> |
| | | Describes hub descriptor provider, which provides information about available hubs. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubDescriptorProvider.GetHubs"> |
| | | <summary> |
| | | Retrieve all avaiable hubs. |
| | | </summary> |
| | | <returns>Collection of hub descriptors.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Hubs.IHubDescriptorProvider.TryGetHub(System.String,Microsoft.AspNet.SignalR.Hubs.HubDescriptor@)"> |
| | | <summary> |
| | | Tries to retrieve hub with a given name. |
| | | </summary> |
| | | <param name="hubName">Name of the hub.</param> |
| | | <param name="descriptor">Retrieved descriptor object.</param> |
| | | <returns>True, if hub has been found</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hub`1"> |
| | | <summary> |
| | | Provides methods that communicate with SignalR connections that connected to a <see cref="T:Microsoft.AspNet.SignalR.Hub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Hub`1.Clients"> |
| | | <summary> |
| | | Gets a dynamic object that represents all clients connected to this hub (not hub instance). |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.HubConfiguration.EnableJavaScriptProxies"> |
| | | <summary> |
| | | Determines whether JavaScript proxies for the server-side hubs should be auto generated at {Path}/hubs or {Path}/js. |
| | | Defaults to true. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.HubConfiguration.EnableDetailedErrors"> |
| | | <summary> |
| | | Determines whether detailed exceptions thrown in Hub methods get reported back the invoking client. |
| | | Defaults to false. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IHubContext"> |
| | | <summary> |
| | | Provides access to information about a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext.Clients"> |
| | | <summary> |
| | | Encapsulates all information about a SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> the hub. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.ConnectionMessage"> |
| | | <summary> |
| | | A message sent to one more connections. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.Signal"> |
| | | <summary> |
| | | The signal to this message should be sent to. Connections subscribed to this signal |
| | | will receive the message payload. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.Signals"> |
| | | <summary> |
| | | A list of signals this message should be delivered to. If this is used |
| | | the Signal cannot be used. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.Value"> |
| | | <summary> |
| | | The payload of the message. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.ConnectionMessage.ExcludedSignals"> |
| | | <summary> |
| | | Represents a list of signals that should be used to filter what connections |
| | | receive this message. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionMessage.#ctor(System.String,System.Object,System.Collections.Generic.IList{System.String})"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.ConnectionMessage"/> class. |
| | | </summary> |
| | | <param name="signal">The signal</param> |
| | | <param name="value">The payload of the message</param> |
| | | <param name="excludedSignals">The signals to exclude.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.GlobalHost"> |
| | | <summary> |
| | | Provides access to default host information. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.DependencyResolver"> |
| | | <summary> |
| | | Gets or sets the the default <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.Configuration"> |
| | | <summary> |
| | | Gets the default <see cref="T:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager"> |
| | | <summary> |
| | | Gets the default <see cref="T:Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.TraceManager"> |
| | | <summary> |
| | | Gets the default <see cref="T:Microsoft.AspNet.SignalR.Tracing.ITraceManager"/> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.GlobalHost.HubPipeline"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IRequest"> |
| | | <summary> |
| | | Represents a SignalR request |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Url"> |
| | | <summary> |
| | | Gets the url for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.LocalPath"> |
| | | <summary> |
| | | The local path part of the url |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.QueryString"> |
| | | <summary> |
| | | Gets the querystring for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Headers"> |
| | | <summary> |
| | | Gets the headers for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Cookies"> |
| | | <summary> |
| | | Gets the cookies for this request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.User"> |
| | | <summary> |
| | | Gets security information for the current HTTP request. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IRequest.Environment"> |
| | | <summary> |
| | | Gets the owin environment |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IRequest.ReadForm"> |
| | | <summary> |
| | | Reads the form of the http request |
| | | </summary> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IUntrackedDisposable"> |
| | | <summary> |
| | | This marker interface can be used in lieu of IDisposable in order to indicate to the dependency resolver that |
| | | it should not retain/track references nor invoke Dispose on instances of the resolved type. |
| | | This is useful for transient types that are created by the dependency resolver, but are short-lived and will |
| | | be Disposed by some other means outside of the resolver. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.SipHashBasedDictionaryConverter"> |
| | | <summary> |
| | | A converter for dictionaries that uses a SipHash comparer |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.IJsonValue"> |
| | | <summary> |
| | | Represents a JSON value. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.IJsonValue.ConvertTo(System.Type)"> |
| | | <summary> |
| | | Converts the parameter value to the specified <see cref="T:System.Type"/>. |
| | | </summary> |
| | | <param name="type">The <see cref="T:System.Type"/> to convert the parameter to.</param> |
| | | <returns>The converted parameter value.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.IJsonValue.CanConvertTo(System.Type)"> |
| | | <summary> |
| | | Determines if the parameter can be converted to the specified <see cref="T:System.Type"/>. |
| | | </summary> |
| | | <param name="type">The <see cref="T:System.Type"/> to check.</param> |
| | | <returns>True if the parameter can be converted to the specified <see cref="T:System.Type"/>, false otherwise.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.IJsonWritable"> |
| | | <summary> |
| | | Implementations handle their own serialization to JSON. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.IJsonWritable.WriteJson(System.IO.TextWriter)"> |
| | | <summary> |
| | | Serializes itself to JSON via a <see cref="T:System.IO.TextWriter"/>. |
| | | </summary> |
| | | <param name="writer">The <see cref="T:System.IO.TextWriter"/> that receives the JSON serialized object.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.JRawValue"> |
| | | <summary> |
| | | An implementation of IJsonValue over JSON.NET |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions"> |
| | | <summary> |
| | | Extensions for <see cref="T:Newtonsoft.Json.JsonSerializer"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Parse``1(Newtonsoft.Json.JsonSerializer,System.String)"> |
| | | <summary> |
| | | Deserializes the JSON to a .NET object. |
| | | </summary> |
| | | <param name="serializer">The serializer</param> |
| | | <typeparam name="T">The <see cref="T:System.Type"/> of object being deserialized.</typeparam> |
| | | <param name="json">The JSON to deserialize</param> |
| | | <returns>The deserialized object from the JSON string.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Parse``1(Newtonsoft.Json.JsonSerializer,System.ArraySegment{System.Byte},System.Text.Encoding)"> |
| | | <summary> |
| | | Deserializes the JSON to a .NET object. |
| | | </summary> |
| | | <param name="serializer">The serializer</param> |
| | | <typeparam name="T">The <see cref="T:System.Type"/> of object being deserialized.</typeparam> |
| | | <param name="jsonBuffer">The JSON buffer to deserialize</param> |
| | | <param name="encoding">The encoding to use.</param> |
| | | <returns>The deserialized object from the JSON string.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Serialize(Newtonsoft.Json.JsonSerializer,System.Object,System.IO.TextWriter)"> |
| | | <summary> |
| | | Serializes the specified object to a <see cref="T:System.IO.TextWriter"/>. |
| | | </summary> |
| | | <param name="serializer">The JSON serializer</param> |
| | | <param name="value">The object to serialize</param> |
| | | <param name="writer">The <see cref="T:System.IO.TextWriter"/> to serialize the object to.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonSerializerExtensions.Stringify(Newtonsoft.Json.JsonSerializer,System.Object)"> |
| | | <summary> |
| | | Serializes the specified object to a JSON string. |
| | | </summary> |
| | | <param name="serializer">The serializer</param> |
| | | <param name="value">The object to serailize.</param> |
| | | <returns>A JSON string representation of the object.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Json.JsonUtility"> |
| | | <summary> |
| | | Helper class for common JSON operations. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonUtility.CamelCase(System.String)"> |
| | | <summary> |
| | | Converts the specified name to camel case. |
| | | </summary> |
| | | <param name="name">The name to convert.</param> |
| | | <returns>A camel cased version of the specified name.</returns> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Json.JsonUtility.JsonMimeType"> |
| | | <summary> |
| | | Gets a string that returns JSON mime type "application/json; charset=UTF-8". |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Json.JsonUtility.JavaScriptMimeType"> |
| | | <summary> |
| | | Gets a string that returns JSONP mime type "application/javascript; charset=UTF-8". |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonUtility.CreateDefaultSerializerSettings"> |
| | | <summary> |
| | | Creates a default <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> instance. |
| | | </summary> |
| | | <returns>The newly created <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Json.JsonUtility.CreateDefaultSerializer"> |
| | | <summary> |
| | | Creates a <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance with the default setting. |
| | | </summary> |
| | | <returns>The newly created <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.MessageBroker"> |
| | | <summary> |
| | | This class is the main coordinator. |
| | | It schedules work to be done for a particular subscription. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage"> |
| | | <summary> |
| | | Represents a message to the scaleout backplane |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage.Messages"> |
| | | <summary> |
| | | The messages from SignalR |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage.ServerCreationTime"> |
| | | <summary> |
| | | The time the message was created on the origin server |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus"> |
| | | <summary> |
| | | Common base class for scaleout message bus implementations. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.StreamCount"> |
| | | <summary> |
| | | The number of streams can't change for the lifetime of this instance. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.Open(System.Int32)"> |
| | | <summary> |
| | | Opens the specified queue for sending messages. |
| | | <param name="streamIndex">The index of the stream to open.</param> |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.Close(System.Int32)"> |
| | | <summary> |
| | | Closes the specified queue. |
| | | <param name="streamIndex">The index of the stream to close.</param> |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.OnError(System.Int32,System.Exception)"> |
| | | <summary> |
| | | Closes the specified queue for sending messages making all sends fail asynchronously. |
| | | </summary> |
| | | <param name="streamIndex">The index of the stream to close.</param> |
| | | <param name="exception">The error that occurred.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.Send(System.Collections.Generic.IList{Microsoft.AspNet.SignalR.Messaging.Message})"> |
| | | <summary> |
| | | Sends messages to the backplane |
| | | </summary> |
| | | <param name="messages">The list of messages to send</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.ScaleoutMessageBus.OnReceived(System.Int32,System.UInt64,Microsoft.AspNet.SignalR.Messaging.ScaleoutMessage)"> |
| | | <summary> |
| | | Invoked when a payload is received from the backplane. There should only be one active call at any time. |
| | | </summary> |
| | | <param name="streamIndex">id of the stream.</param> |
| | | <param name="id">id of the payload within that stream.</param> |
| | | <param name="message">The scaleout message.</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.IMessageBus.Publish(Microsoft.AspNet.SignalR.Messaging.Message)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="message"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.IMessageBus.Subscribe(Microsoft.AspNet.SignalR.Messaging.ISubscriber,System.String,System.Func{Microsoft.AspNet.SignalR.Messaging.MessageResult,System.Object,System.Threading.Tasks.Task{System.Boolean}},System.Int32,System.Object)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="subscriber"></param> |
| | | <param name="cursor"></param> |
| | | <param name="callback"></param> |
| | | <param name="maxMessages"></param> |
| | | <param name="state"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.MessageBus"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="resolver"></param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.#ctor(Microsoft.AspNet.SignalR.Infrastructure.IStringMinifier,Microsoft.AspNet.SignalR.Tracing.ITraceManager,Microsoft.AspNet.SignalR.Infrastructure.IPerformanceCounterManager,Microsoft.AspNet.SignalR.Configuration.IConfigurationManager,System.Int32)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="stringMinifier"></param> |
| | | <param name="traceManager"></param> |
| | | <param name="performanceCounterManager"></param> |
| | | <param name="configurationManager"></param> |
| | | <param name="maxTopicsWithNoSubscriptions"></param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.Publish(Microsoft.AspNet.SignalR.Messaging.Message)"> |
| | | <summary> |
| | | Publishes a new message to the specified event on the bus. |
| | | </summary> |
| | | <param name="message">The message to publish.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.Subscribe(Microsoft.AspNet.SignalR.Messaging.ISubscriber,System.String,System.Func{Microsoft.AspNet.SignalR.Messaging.MessageResult,System.Object,System.Threading.Tasks.Task{System.Boolean}},System.Int32,System.Object)"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | <param name="subscriber"></param> |
| | | <param name="cursor"></param> |
| | | <param name="callback"></param> |
| | | <param name="maxMessages"></param> |
| | | <param name="state"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageBus.CreateTopic(System.String)"> |
| | | <summary> |
| | | Creates a topic for the specified key. |
| | | </summary> |
| | | <param name="key">The key to create the topic for.</param> |
| | | <returns>A <see cref="T:Microsoft.AspNet.SignalR.Messaging.Topic"/> for the specified key.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.MessageResult"> |
| | | <summary> |
| | | |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.MessageResult.Messages"> |
| | | <summary> |
| | | Gets an <see cref="T:IList{Message}"/> associated with the result. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Messaging.MessageResult.#ctor(System.Collections.Generic.IList{System.ArraySegment{Microsoft.AspNet.SignalR.Messaging.Message}},System.Int32)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Messaging.MessageResult"/> struct. |
| | | </summary> |
| | | <param name="messages">The array of messages associated with this <see cref="T:Microsoft.AspNet.SignalR.Messaging.MessageResult"/>.</param> |
| | | <param name="totalCount">The amount of messages populated in the messages array.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Messaging.ScaleoutConfiguration"> |
| | | <summary> |
| | | Common settings for scale-out message bus implementations. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutConfiguration.QueueBehavior"> |
| | | <summary> |
| | | Gets or sets a value that represents the queuing behavior for scale-out messages. |
| | | Defaults to <see cref="F:Microsoft.AspNet.SignalR.QueuingBehavior.InitialOnly">QueuingBehavior.InitialOnly</see> |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.ScaleoutConfiguration.MaxQueueLength"> |
| | | <summary> |
| | | The maximum length of the outgoing send queue. Messages being sent to the backplane are queued |
| | | up to this length. After the max length is reached, further sends will throw an <see cref="T:System.InvalidOperationException">InvalidOperationException</see>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Source"> |
| | | <summary> |
| | | Which connection the message originated from |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Key"> |
| | | <summary> |
| | | The signal for the message (connection id, group, etc) |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Value"> |
| | | <summary> |
| | | The message payload |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.CommandId"> |
| | | <summary> |
| | | The command id if this message is a command |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.WaitForAck"> |
| | | <summary> |
| | | Determines if the caller should wait for acknowledgement for this message |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.IsAck"> |
| | | <summary> |
| | | Determines if this message is itself an ACK |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Filter"> |
| | | <summary> |
| | | A list of connection ids to filter out |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.Encoding"> |
| | | <summary> |
| | | The encoding of the message |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.MappingId"> |
| | | <summary> |
| | | The payload id. Only used in scaleout scenarios |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Messaging.Message.StreamIndex"> |
| | | <summary> |
| | | The stream index this message came from. Only used the scaleout scenarios. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.AuthorizeAttribute"> |
| | | <summary> |
| | | Apply to Hubs and Hub methods to authorize client connections to Hubs and authorize client invocations of Hub methods. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.AuthorizeAttribute.RequireOutgoing"> |
| | | <summary> |
| | | Set to false to apply authorization only to the invocations of any of the Hub's server-side methods. |
| | | This property only affects attributes applied to the Hub class. |
| | | This property cannot be read. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.AuthorizeAttribute.Roles"> |
| | | <summary> |
| | | Gets or sets the user roles. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.AuthorizeAttribute.Users"> |
| | | <summary> |
| | | Gets or sets the authorized users. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubConnection(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Determines whether client is authorized to connect to <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | <param name="hubDescriptor">Description of the hub client is attempting to connect to.</param> |
| | | <param name="request">The (re)connect request from the client.</param> |
| | | <returns>true if the caller is authorized to connect to the hub; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubMethodInvocation(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Boolean)"> |
| | | <summary> |
| | | Determines whether client is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method. |
| | | </summary> |
| | | <param name="hubIncomingInvokerContext">An <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext"/> providing details regarding the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method invocation.</param> |
| | | <param name="appliesToMethod">Indicates whether the interface instance is an attribute applied directly to a method.</param> |
| | | <returns>true if the caller is authorized to invoke the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> method; otherwise, false.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.UserAuthorized(System.Security.Principal.IPrincipal)"> |
| | | <summary> |
| | | When overridden, provides an entry point for custom authorization checks. |
| | | Called by <see cref="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubConnection(Microsoft.AspNet.SignalR.Hubs.HubDescriptor,Microsoft.AspNet.SignalR.IRequest)"/> and <see cref="M:Microsoft.AspNet.SignalR.AuthorizeAttribute.AuthorizeHubMethodInvocation(Microsoft.AspNet.SignalR.Hubs.IHubIncomingInvokerContext,System.Boolean)"/>. |
| | | </summary> |
| | | <param name="user">The <see cref="T:System.Security.Principal.IPrincipal"/> for the client being authorize</param> |
| | | <returns>true if the user is authorized, otherwise, false</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.HubPipelineExtensions.RequireAuthentication(Microsoft.AspNet.SignalR.Hubs.IHubPipeline)"> |
| | | <summary> |
| | | Requiring Authentication adds an <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule"/> to the <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> with <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubConnection"/> |
| | | and <see cref="T:Microsoft.AspNet.SignalR.Hubs.IAuthorizeHubMethodInvocation"/> authorizers that will be applied globally to all hubs and hub methods. |
| | | These authorizers require that the <see cref="T:System.Security.Principal.IPrincipal"/>'s <see cref="T:System.Security.Principal.IIdentity"/> |
| | | IsAuthenticated for any clients that invoke server-side hub methods or receive client-side hub method invocations. |
| | | </summary> |
| | | <param name="pipeline">The <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHubPipeline" /> to which the <see cref="T:Microsoft.AspNet.SignalR.Hubs.AuthorizeModule" /> will be added.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IHubContext`1"> |
| | | <summary> |
| | | Provides access to information about a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext`1.Clients"> |
| | | <summary> |
| | | Encapsulates all information about a SignalR connection for an <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IHubContext`1.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> the hub. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IConnectionGroupManager"> |
| | | <summary> |
| | | Manages groups for a connection and allows sending messages to the group. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IConnectionGroupManager.Send(System.String,System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified group. |
| | | </summary> |
| | | <param name="groupName">The name of the group.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IConnectionGroupManager.Send(System.Collections.Generic.IList{System.String},System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified groups. |
| | | </summary> |
| | | <param name="groupNames">The names of the groups.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionExtensions.Send(Microsoft.AspNet.SignalR.IConnection,System.String,System.Object)"> |
| | | <summary> |
| | | Sends a message to all connections subscribed to the specified signal. An example of signal may be a |
| | | specific connection id. |
| | | </summary> |
| | | <param name="connection">The connection</param> |
| | | <param name="connectionId">The connectionId to send to.</param> |
| | | <param name="value">The value to publish.</param> |
| | | <returns>A task that represents when the broadcast is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionExtensions.Send(Microsoft.AspNet.SignalR.IConnection,System.Collections.Generic.IList{System.String},System.Object)"> |
| | | <summary> |
| | | Sends a message to all connections subscribed to the specified signal. An example of signal may be a |
| | | specific connection id. |
| | | </summary> |
| | | <param name="connection">The connection</param> |
| | | <param name="connectionIds">The connection ids to send to.</param> |
| | | <param name="value">The value to publish.</param> |
| | | <returns>A task that represents when the broadcast is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.ConnectionExtensions.Broadcast(Microsoft.AspNet.SignalR.IConnection,System.Object,System.String[])"> |
| | | <summary> |
| | | Broadcasts a value to all connections, excluding the connection ids specified. |
| | | </summary> |
| | | <param name="connection">The connection</param> |
| | | <param name="value">The value to broadcast.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when the broadcast is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IPersistentConnectionContext"> |
| | | <summary> |
| | | Provides access to information about a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection" />. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IPersistentConnectionContext.Connection"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnection" /> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection" />. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IPersistentConnectionContext.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnectionGroupManager" /> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection" />. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Owin.WebSocketConstants"> |
| | | <summary> |
| | | Standard keys and values for use within the OWIN interfaces |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Resources"> |
| | | <summary> |
| | | A strongly-typed resource class, for looking up localized strings, etc. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.ResourceManager"> |
| | | <summary> |
| | | Returns the cached ResourceManager instance used by this class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Culture"> |
| | | <summary> |
| | | Overrides the current thread's CurrentUICulture property for all |
| | | resource lookups using this strongly typed resource class. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.DynamicComment_CallsMethodOnServerSideDeferredPromise"> |
| | | <summary> |
| | | Looks up a localized string similar to /// <summary>Calls the {0} method on the server-side {1} hub.&#10;Returns a jQuery.Deferred() promise.</summary>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.DynamicComment_ServerSideTypeIs"> |
| | | <summary> |
| | | Looks up a localized string similar to /// <param name=\"{0}\" type=\"{1}\">Server side type is {2}</param>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_AmbiguousMessage"> |
| | | <summary> |
| | | Looks up a localized string similar to Ambiguous message. Unable to send to both '{0}' and '{1}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ArgumentNullOrEmpty"> |
| | | <summary> |
| | | Looks up a localized string similar to Argument cannot be null or empty. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_BufferSizeOutOfRange"> |
| | | <summary> |
| | | Looks up a localized string similar to The buffer size '{0}' is out of range.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_CallerNotAuthorizedToInvokeMethodOn"> |
| | | <summary> |
| | | Looks up a localized string similar to Caller is not authorized to invoke the {0} method on {1}.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ConnectionIdIncorrectFormat"> |
| | | <summary> |
| | | Looks up a localized string similar to The ConnectionId is in the incorrect format.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ConnectionNotInitialized"> |
| | | <summary> |
| | | Looks up a localized string similar to The PersistentConnection is not initialized.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DisconnectTimeoutCannotBeConfiguredAfterKeepAlive"> |
| | | <summary> |
| | | Looks up a localized string similar to DisconnectTimeout cannot be configured after the KeepAlive.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DisconnectTimeoutMustBeAtLeastSixSeconds"> |
| | | <summary> |
| | | Looks up a localized string similar to DisconnectTimeout must be at least six seconds.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DoNotReadRequireOutgoing"> |
| | | <summary> |
| | | Looks up a localized string similar to Do not read RequireOutgoing. Use protected _requireOutgoing instead.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DuplicateHubNames"> |
| | | <summary> |
| | | Looks up a localized string similar to Two Hubs must not share the same name. '{0}' and '{1}' both share the name '{2}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DuplicateHubNamesInConnectionData"> |
| | | <summary> |
| | | Looks up a localized string similar to Duplicate Hub names found.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_DuplicatePayloadsForStream"> |
| | | <summary> |
| | | Looks up a localized string similar to Duplicate payload id detected for stream '{0}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ExceptionContextCanOnlyBeModifiedOnce"> |
| | | <summary> |
| | | Looks up a localized string similar to The ExceptionContext has already been modified once and cannot be modified again.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_HubCouldNotBeResolved"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' Hub could not be resolved.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_HubInvocationFailed"> |
| | | <summary> |
| | | Looks up a localized string similar to There was an error invoking Hub method '{0}.{1}'.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_HubProgressOnlyReportableBeforeMethodReturns"> |
| | | <summary> |
| | | Looks up a localized string similar to You cannot report progress on a hub method invocation that has already completed.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_InvalidCursorFormat"> |
| | | <summary> |
| | | Looks up a localized string similar to Invalid cursor.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_InvalidForeverFrameId"> |
| | | <summary> |
| | | Looks up a localized string similar to The supplied frameId is in the incorrect format.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_IsNotA"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' is not a {1}.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_JavaScriptProxyDisabled"> |
| | | <summary> |
| | | Looks up a localized string similar to SignalR: JavaScript Hub proxy generation has been disabled.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_KeepAliveMustBeGreaterThanTwoSeconds"> |
| | | <summary> |
| | | Looks up a localized string similar to KeepAlive value must be greater than two seconds.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_KeepAliveMustBeNoMoreThanAThirdOfTheDisconnectTimeout"> |
| | | <summary> |
| | | Looks up a localized string similar to KeepAlive value must be no more than a third of the DisconnectTimeout.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MaxScaleoutMappingsPerStreamMustBeNonNegative"> |
| | | <summary> |
| | | Looks up a localized string similar to The value of the MaxScaleoutMappingsPerStream property must be greater or equal to zero.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodCouldNotBeResolved"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' method could not be resolved. No method found with that name.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodCouldNotBeResolvedCandidates"> |
| | | <summary> |
| | | Looks up a localized string similar to '{0}' method could not be resolved. Potential candidates are: {1}. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodLevelOutgoingAuthorization"> |
| | | <summary> |
| | | Looks up a localized string similar to Outgoing authorization can only be required for an entire Hub, not a specific method.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodMustNotTakeOutParameter"> |
| | | <summary> |
| | | Looks up a localized string similar to The '{0}' parameter of '{1}.{2}' must not be an out parameter.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodMustNotTakeRefParameter"> |
| | | <summary> |
| | | Looks up a localized string similar to The '{0}' parameter of '{1}.{2}' must not be a ref parameter.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MethodMustReturnVoidOrTask"> |
| | | <summary> |
| | | Looks up a localized string similar to The return type of '{0}.{1}' must be void or Task.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_MultipleActivatorsAreaRegisteredCallGetServices"> |
| | | <summary> |
| | | Looks up a localized string similar to Multiple activators for type {0} are registered. Please call GetServices instead.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_NoConfiguration"> |
| | | <summary> |
| | | Looks up a localized string similar to A configuration object must be specified.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_NoDependencyResolver"> |
| | | <summary> |
| | | Looks up a localized string similar to A dependency resolver must be specified.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_NotWebSocketRequest"> |
| | | <summary> |
| | | Looks up a localized string similar to Not a valid web socket request.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ParseObjectFailed"> |
| | | <summary> |
| | | Looks up a localized string similar to Unexpected end when reading object.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ProtocolErrorMissingConnectionToken"> |
| | | <summary> |
| | | Looks up a localized string similar to Protocol error: Missing connection token.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ProtocolErrorUnknownTransport"> |
| | | <summary> |
| | | Looks up a localized string similar to Protocol error: Unknown transport.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_ScaleoutQueuingConfig"> |
| | | <summary> |
| | | Looks up a localized string similar to Scaleout queuing is enabled but maximum queue size is 0. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_StateExceededMaximumLength"> |
| | | <summary> |
| | | Looks up a localized string similar to State has exceeded the maximum length of 4096 bytes.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_StreamClosed"> |
| | | <summary> |
| | | Looks up a localized string similar to The stream has been closed.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_StreamNotOpen"> |
| | | <summary> |
| | | Looks up a localized string similar to The stream is not open.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TaskQueueFull"> |
| | | <summary> |
| | | Looks up a localized string similar to The queue is full.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TypeMustBeInterface"> |
| | | <summary> |
| | | Looks up a localized string similar to The type T, '{0}', passed to Hub<T> must be an interface.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TypeMustNotContainEvents"> |
| | | <summary> |
| | | Looks up a localized string similar to The interface '{0}' must not contain any events.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_TypeMustNotContainProperties"> |
| | | <summary> |
| | | Looks up a localized string similar to The interface '{0}' must not contain any properties.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_UnableToAddModulePiplineAlreadyInvoked"> |
| | | <summary> |
| | | Looks up a localized string similar to Unable to add module. The HubPipeline has already been invoked.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_UnrecognizedUserIdentity"> |
| | | <summary> |
| | | Looks up a localized string similar to Unrecognized user identity. The user identity cannot change during an active SignalR connection.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_UsingHubInstanceNotCreatedUnsupported"> |
| | | <summary> |
| | | Looks up a localized string similar to Using a Hub instance not created by the HubPipeline is unsupported.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Error_WebSocketsNotSupported"> |
| | | <summary> |
| | | Looks up a localized string similar to WebSockets is not supported.. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Resources.Forbidden_JSONPDisabled"> |
| | | <summary> |
| | | Looks up a localized string similar to Forbidden: JSONP is disabled.. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IGroupManager"> |
| | | <summary> |
| | | Manages groups for a connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IGroupManager.Add(System.String,System.String)"> |
| | | <summary> |
| | | Adds a connection to the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to add to the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being added to the group.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IGroupManager.Remove(System.String,System.String)"> |
| | | <summary> |
| | | Removes a connection from the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to remove from the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being removed from the group.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Hub"> |
| | | <summary> |
| | | Provides methods that communicate with SignalR connections that connected to a <see cref="T:Microsoft.AspNet.SignalR.Hub"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITrackingConnection"> |
| | | <summary> |
| | | Represents a connection that can be tracked by an <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.ConnectionId"> |
| | | <summary> |
| | | Gets the id of the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.CancellationToken"> |
| | | <summary> |
| | | Gets a cancellation token that represents the connection's lifetime. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.ConnectTask"> |
| | | <summary> |
| | | Gets the task that completes when the task returned by PersistentConnection.OnConnected does. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.IsAlive"> |
| | | <summary> |
| | | Gets a value that represents if the connection is alive. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.IsTimedOut"> |
| | | <summary> |
| | | Gets a value that represents if the connection is timed out. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.SupportsKeepAlive"> |
| | | <summary> |
| | | Gets a value that represents if the connection supprots keep alive. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.RequiresTimeout"> |
| | | <summary> |
| | | Gets a value that represents if the connection should timeout after inactivity. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.DisconnectThreshold"> |
| | | <summary> |
| | | Gets a value indicating the amount of time to wait after the connection dies before firing the disconnecting the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.Url"> |
| | | <summary> |
| | | Gets the uri of the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.ApplyState(Microsoft.AspNet.SignalR.Transports.TransportConnectionStates)"> |
| | | <summary> |
| | | Applies a new state to the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.Disconnect"> |
| | | <summary> |
| | | Causes the connection to disconnect. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.Timeout"> |
| | | <summary> |
| | | Causes the connection to timeout. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.KeepAlive"> |
| | | <summary> |
| | | Sends a keep alive ping over the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.IncrementConnectionsCount"> |
| | | <summary> |
| | | Increments performance counter for current connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.DecrementConnectionsCount"> |
| | | <summary> |
| | | Decrements performance counter for current connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITrackingConnection.End"> |
| | | <summary> |
| | | Kills the connection. |
| | | </summary> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITransport"> |
| | | <summary> |
| | | Represents a transport that communicates |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Received"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the transport receives data. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Connected"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the initial connection connects to the transport. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Reconnected"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the transport reconnects. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.Disconnected"> |
| | | <summary> |
| | | Gets or sets a callback that is invoked when the transport disconnects. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.ITransport.ConnectionId"> |
| | | <summary> |
| | | Gets or sets the connection id for the transport. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransport.GetGroupsToken"> |
| | | <summary> |
| | | Get groupsToken in request over the transport. |
| | | </summary> |
| | | <returns>groupsToken in request</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransport.ProcessRequest(Microsoft.AspNet.SignalR.Transports.ITransportConnection)"> |
| | | <summary> |
| | | Processes the specified <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportConnection"/> for this transport. |
| | | </summary> |
| | | <param name="connection">The <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportConnection"/> to process.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the transport has finished processing the connection.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransport.Send(System.Object)"> |
| | | <summary> |
| | | Sends data over the transport. |
| | | </summary> |
| | | <param name="value">The value to be sent.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the send is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat"> |
| | | <summary> |
| | | Manages tracking the state of connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.AddOrUpdateConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Adds a new connection to the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to be added.</param> |
| | | <returns>The connection it replaced, if any.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.MarkConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Marks an existing connection as active. |
| | | </summary> |
| | | <param name="connection">The connection to mark.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.RemoveConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Removes a connection from the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to remove.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat.GetConnections"> |
| | | <summary> |
| | | Gets a list of connections being tracked. |
| | | </summary> |
| | | <returns>A list of connections.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.ITransportManager"> |
| | | <summary> |
| | | Manages the transports for connections. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportManager.GetTransport(Microsoft.AspNet.SignalR.Hosting.HostContext)"> |
| | | <summary> |
| | | Gets the specified transport for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>. |
| | | </summary> |
| | | <param name="hostContext">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/> for the current request.</param> |
| | | <returns>The <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransport"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.ITransportManager.SupportsTransport(System.String)"> |
| | | <summary> |
| | | Determines whether the specified transport is supported. |
| | | </summary> |
| | | <param name="transportName">The name of the transport to test.</param> |
| | | <returns>True if the transport is supported, otherwise False.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat"> |
| | | <summary> |
| | | Default implementation of <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportHeartbeat"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Initializes and instance of the <see cref="T:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat"/> class. |
| | | </summary> |
| | | <param name="resolver">The <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.AddOrUpdateConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Adds a new connection to the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to be added.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.RemoveConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Removes a connection from the list of tracked connections. |
| | | </summary> |
| | | <param name="connection">The connection to remove.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportHeartbeat.MarkConnection(Microsoft.AspNet.SignalR.Transports.ITrackingConnection)"> |
| | | <summary> |
| | | Marks an existing connection as active. |
| | | </summary> |
| | | <param name="connection">The connection to mark.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.PersistentResponse"> |
| | | <summary> |
| | | Represents a response to a connection. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.PersistentResponse.#ctor(System.Func{Microsoft.AspNet.SignalR.Messaging.Message,System.Boolean},System.Action{System.IO.TextWriter})"> |
| | | <summary> |
| | | Creates a new instance of <see cref="T:Microsoft.AspNet.SignalR.Transports.PersistentResponse"/>. |
| | | </summary> |
| | | <param name="exclude">A filter that determines whether messages should be written to the client.</param> |
| | | <param name="writeCursor">The cursor writer.</param> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Messages"> |
| | | <summary> |
| | | The list of messages to be sent to the receiving connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.TotalCount"> |
| | | <summary> |
| | | The total count of the messages sent the receiving connection. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Initializing"> |
| | | <summary> |
| | | True if the connection is in process of initializing |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Aborted"> |
| | | <summary> |
| | | True if the connection was forcibly closed. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Reconnect"> |
| | | <summary> |
| | | True if the client should try reconnecting. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.GroupsToken"> |
| | | <summary> |
| | | Signed token representing the list of groups. Updates on change. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.Transports.PersistentResponse.LongPollDelay"> |
| | | <summary> |
| | | The time the long polling client should wait before reestablishing a connection if no data is received. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.PersistentResponse.Microsoft#AspNet#SignalR#Json#IJsonWritable#WriteJson(System.IO.TextWriter)"> |
| | | <summary> |
| | | Serializes only the necessary components of the <see cref="T:Microsoft.AspNet.SignalR.Transports.PersistentResponse"/> to JSON |
| | | using Json.NET's JsonTextWriter to improve performance. |
| | | </summary> |
| | | <param name="writer">The <see cref="T:System.IO.TextWriter"/> that receives the JSON serialization.</param> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.Transports.TransportManager"> |
| | | <summary> |
| | | The default <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransportManager"/> implementation. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.#ctor(Microsoft.AspNet.SignalR.IDependencyResolver)"> |
| | | <summary> |
| | | Initializes a new instance of <see cref="T:Microsoft.AspNet.SignalR.Transports.TransportManager"/> class. |
| | | </summary> |
| | | <param name="resolver">The default <see cref="T:Microsoft.AspNet.SignalR.IDependencyResolver"/>.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.Register(System.String,System.Func{Microsoft.AspNet.SignalR.Hosting.HostContext,Microsoft.AspNet.SignalR.Transports.ITransport})"> |
| | | <summary> |
| | | Adds a new transport to the list of supported transports. |
| | | </summary> |
| | | <param name="transportName">The specified transport.</param> |
| | | <param name="transportFactory">The factory method for the specified transport.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.Remove(System.String)"> |
| | | <summary> |
| | | Removes a transport from the list of supported transports. |
| | | </summary> |
| | | <param name="transportName">The specified transport.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.GetTransport(Microsoft.AspNet.SignalR.Hosting.HostContext)"> |
| | | <summary> |
| | | Gets the specified transport for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>. |
| | | </summary> |
| | | <param name="hostContext">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/> for the current request.</param> |
| | | <returns>The <see cref="T:Microsoft.AspNet.SignalR.Transports.ITransport"/> for the specified <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.Transports.TransportManager.SupportsTransport(System.String)"> |
| | | <summary> |
| | | Determines whether the specified transport is supported. |
| | | </summary> |
| | | <param name="transportName">The name of the transport to test.</param> |
| | | <returns>True if the transport is supported, otherwise False.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.GroupManager"> |
| | | <summary> |
| | | The default <see cref="T:Microsoft.AspNet.SignalR.IGroupManager"/> implementation. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.#ctor(Microsoft.AspNet.SignalR.IConnection,System.String)"> |
| | | <summary> |
| | | Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.GroupManager"/> class. |
| | | </summary> |
| | | <param name="connection">The <see cref="T:Microsoft.AspNet.SignalR.IConnection"/> this group resides on.</param> |
| | | <param name="groupPrefix">The prefix for this group. Either a <see cref="T:Microsoft.AspNet.SignalR.Hubs.IHub"/> name or <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> type name.</param> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Send(System.String,System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified group. |
| | | </summary> |
| | | <param name="groupName">The name of the group.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Send(System.Collections.Generic.IList{System.String},System.Object,System.String[])"> |
| | | <summary> |
| | | Sends a value to the specified group. |
| | | </summary> |
| | | <param name="groupNames">The names of the groups.</param> |
| | | <param name="value">The value to send.</param> |
| | | <param name="excludeConnectionIds">The list of connection ids to exclude</param> |
| | | <returns>A task that represents when send is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Add(System.String,System.String)"> |
| | | <summary> |
| | | Adds a connection to the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to add to the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being added to the group.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.GroupManager.Remove(System.String,System.String)"> |
| | | <summary> |
| | | Removes a connection from the specified group. |
| | | </summary> |
| | | <param name="connectionId">The connection id to remove from the group.</param> |
| | | <param name="groupName">The name of the group</param> |
| | | <returns>A task that represents the connection id being removed from the group.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.PersistentConnection"> |
| | | <summary> |
| | | Represents a connection between client and server. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.PersistentConnection.Connection"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnection"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.PersistentConnection.Groups"> |
| | | <summary> |
| | | Gets the <see cref="T:Microsoft.AspNet.SignalR.IConnectionGroupManager"/> for the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(System.Collections.Generic.IDictionary{System.String,System.Object})"> |
| | | <summary> |
| | | OWIN entry point. |
| | | </summary> |
| | | <param name="environment"></param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(Microsoft.AspNet.SignalR.Hosting.HostContext)"> |
| | | <summary> |
| | | Handles all requests for <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>s. |
| | | </summary> |
| | | <param name="context">The <see cref="T:Microsoft.AspNet.SignalR.Hosting.HostContext"/> for the current request.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> pipeline is complete.</returns> |
| | | <exception cref="T:System.InvalidOperationException"> |
| | | Thrown if connection wasn't initialized. |
| | | Thrown if the transport wasn't specified. |
| | | Thrown if the connection id wasn't specified. |
| | | </exception> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.GetSignals(System.String,System.String)"> |
| | | <summary> |
| | | Returns the signals used in the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | <param name="userId">The user id for the current connection.</param> |
| | | <param name="connectionId">The id of the incoming connection.</param> |
| | | <returns>The signals used for this <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.AuthorizeRequest(Microsoft.AspNet.SignalR.IRequest)"> |
| | | <summary> |
| | | Called before every request and gives the user a authorize the user. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <returns>A boolean value that represents if the request is authorized.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnRejoiningGroups(Microsoft.AspNet.SignalR.IRequest,System.Collections.Generic.IList{System.String},System.String)"> |
| | | <summary> |
| | | Called when a connection reconnects after a timeout to determine which groups should be rejoined. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="groups">The groups the calling connection claims to be part of.</param> |
| | | <param name="connectionId">The id of the reconnecting client.</param> |
| | | <returns>A collection of group names that should be joined on reconnect</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnConnected(Microsoft.AspNet.SignalR.IRequest,System.String)"> |
| | | <summary> |
| | | Called when a new connection is made. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the connecting client.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the connect operation is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnReconnected(Microsoft.AspNet.SignalR.IRequest,System.String)"> |
| | | <summary> |
| | | Called when a connection reconnects after a timeout. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the re-connecting client.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the re-connect operation is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnReceived(Microsoft.AspNet.SignalR.IRequest,System.String,System.String)"> |
| | | <summary> |
| | | Called when data is received from a connection. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the connection sending the data.</param> |
| | | <param name="data">The payload sent to the connection.</param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the receive operation is complete.</returns> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.PersistentConnection.OnDisconnected(Microsoft.AspNet.SignalR.IRequest,System.String,System.Boolean)"> |
| | | <summary> |
| | | Called when a connection disconnects gracefully or due to a timeout. |
| | | </summary> |
| | | <param name="request">The <see cref="T:Microsoft.AspNet.SignalR.IRequest"/> for the current connection.</param> |
| | | <param name="connectionId">The id of the disconnected connection.</param> |
| | | <param name="stopCalled"> |
| | | true, if stop was called on the client closing the connection gracefully; |
| | | false, if the connection has been lost for longer than the |
| | | <see cref="P:Microsoft.AspNet.SignalR.Configuration.IConfigurationManager.DisconnectTimeout"/>. |
| | | Timeouts can occur in scaleout when clients reconnect with another server. |
| | | </param> |
| | | <returns>A <see cref="T:System.Threading.Tasks.Task"/> that completes when the disconnect operation is complete.</returns> |
| | | </member> |
| | | <member name="T:Microsoft.AspNet.SignalR.IConnection"> |
| | | <summary> |
| | | A communication channel for a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> and its connections. |
| | | </summary> |
| | | </member> |
| | | <member name="P:Microsoft.AspNet.SignalR.IConnection.DefaultSignal"> |
| | | <summary> |
| | | The main signal for this connection. This is the main signalr for a <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/>. |
| | | </summary> |
| | | </member> |
| | | <member name="M:Microsoft.AspNet.SignalR.IConnection.Send(Microsoft.AspNet.SignalR.ConnectionMessage)"> |
| | | <summary> |
| | | Sends a message to connections subscribed to the signal. |
| | | </summary> |
| | | <param name="message">The message to send.</param> |
| | | <returns>A task that returns when the message has be sent.</returns> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Maps SignalR hubs to the app builder pipeline at "/signalr". |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Maps SignalR hubs to the app builder pipeline at "/signalr". |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.HubConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Maps SignalR hubs to the app builder pipeline at the specified path. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map signalr hubs</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.HubConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Adds SignalR hubs to the app builder pipeline. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR(Owin.IAppBuilder,Microsoft.AspNet.SignalR.HubConfiguration)"> |
| | | <summary> |
| | | Adds SignalR hubs to the app builder pipeline. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.HubConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR``1(Owin.IAppBuilder,System.String)"> |
| | | <summary> |
| | | Maps the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder pipeline at |
| | | the specified path. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map the <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR``1(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Maps the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder pipeline at |
| | | the specified path. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map the persistent connection</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.MapSignalR(Owin.IAppBuilder,System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Maps the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder pipeline at |
| | | the specified path. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="path">The path to map the persistent connection</param> |
| | | <param name="connectionType">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR``1(Owin.IAppBuilder)"> |
| | | <summary> |
| | | Adds the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR``1(Owin.IAppBuilder,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Adds the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder. |
| | | </summary> |
| | | <typeparam name="TConnection">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></typeparam> |
| | | <param name="builder">The app builder</param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | <returns></returns> |
| | | </member> |
| | | <member name="M:Owin.OwinExtensions.RunSignalR(Owin.IAppBuilder,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"> |
| | | <summary> |
| | | Adds the specified SignalR <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/> to the app builder. |
| | | </summary> |
| | | <param name="builder">The app builder</param> |
| | | <param name="connectionType">The type of <see cref="T:Microsoft.AspNet.SignalR.PersistentConnection"/></param> |
| | | <param name="configuration">The <see cref="T:Microsoft.AspNet.SignalR.ConnectionConfiguration"/> to use</param> |
| | | <returns></returns> |
| | | </member> |
| | | </members> |
| | | </doc> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | /* jquery.signalR.core.js */ |
| | | /*global window:false */ |
| | | /*! |
| | | * ASP.NET SignalR JavaScript Library v2.2.2 |
| | | * http://signalr.net/ |
| | | * |
| | | * Copyright (c) .NET Foundation. All rights reserved. |
| | | * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | * |
| | | */ |
| | | |
| | | /// <reference path="Scripts/jquery-1.6.4.js" /> |
| | | /// <reference path="jquery.signalR.version.js" /> |
| | | (function ($, window, undefined) { |
| | | |
| | | var resources = { |
| | | nojQuery: "jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.", |
| | | noTransportOnInit: "No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.", |
| | | errorOnNegotiate: "Error during negotiation request.", |
| | | stoppedWhileLoading: "The connection was stopped during page load.", |
| | | stoppedWhileNegotiating: "The connection was stopped during the negotiate request.", |
| | | errorParsingNegotiateResponse: "Error parsing negotiate response.", |
| | | errorDuringStartRequest: "Error during start request. Stopping the connection.", |
| | | stoppedDuringStartRequest: "The connection was stopped during the start request.", |
| | | errorParsingStartResponse: "Error parsing start response: '{0}'. Stopping the connection.", |
| | | invalidStartResponse: "Invalid start response: '{0}'. Stopping the connection.", |
| | | protocolIncompatible: "You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}.", |
| | | sendFailed: "Send failed.", |
| | | parseFailed: "Failed at parsing response: {0}", |
| | | longPollFailed: "Long polling request failed.", |
| | | eventSourceFailedToConnect: "EventSource failed to connect.", |
| | | eventSourceError: "Error raised by EventSource", |
| | | webSocketClosed: "WebSocket closed.", |
| | | pingServerFailedInvalidResponse: "Invalid ping response when pinging server: '{0}'.", |
| | | pingServerFailed: "Failed to ping server.", |
| | | pingServerFailedStatusCode: "Failed to ping server. Server responded with status code {0}, stopping the connection.", |
| | | pingServerFailedParse: "Failed to parse ping server response, stopping the connection.", |
| | | noConnectionTransport: "Connection is in an invalid state, there is no transport active.", |
| | | webSocketsInvalidState: "The Web Socket transport is in an invalid state, transitioning into reconnecting.", |
| | | reconnectTimeout: "Couldn't reconnect within the configured timeout of {0} ms, disconnecting.", |
| | | reconnectWindowTimeout: "The client has been inactive since {0} and it has exceeded the inactivity timeout of {1} ms. Stopping the connection." |
| | | }; |
| | | |
| | | if (typeof ($) !== "function") { |
| | | // no jQuery! |
| | | throw new Error(resources.nojQuery); |
| | | } |
| | | |
| | | var signalR, |
| | | _connection, |
| | | _pageLoaded = (window.document.readyState === "complete"), |
| | | _pageWindow = $(window), |
| | | _negotiateAbortText = "__Negotiate Aborted__", |
| | | events = { |
| | | onStart: "onStart", |
| | | onStarting: "onStarting", |
| | | onReceived: "onReceived", |
| | | onError: "onError", |
| | | onConnectionSlow: "onConnectionSlow", |
| | | onReconnecting: "onReconnecting", |
| | | onReconnect: "onReconnect", |
| | | onStateChanged: "onStateChanged", |
| | | onDisconnect: "onDisconnect" |
| | | }, |
| | | ajaxDefaults = { |
| | | processData: true, |
| | | timeout: null, |
| | | async: true, |
| | | global: false, |
| | | cache: false |
| | | }, |
| | | log = function (msg, logging) { |
| | | if (logging === false) { |
| | | return; |
| | | } |
| | | var m; |
| | | if (typeof (window.console) === "undefined") { |
| | | return; |
| | | } |
| | | m = "[" + new Date().toTimeString() + "] SignalR: " + msg; |
| | | if (window.console.debug) { |
| | | window.console.debug(m); |
| | | } else if (window.console.log) { |
| | | window.console.log(m); |
| | | } |
| | | }, |
| | | |
| | | changeState = function (connection, expectedState, newState) { |
| | | if (expectedState === connection.state) { |
| | | connection.state = newState; |
| | | |
| | | $(connection).triggerHandler(events.onStateChanged, [{ oldState: expectedState, newState: newState }]); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | |
| | | isDisconnecting = function (connection) { |
| | | return connection.state === signalR.connectionState.disconnected; |
| | | }, |
| | | |
| | | supportsKeepAlive = function (connection) { |
| | | return connection._.keepAliveData.activated && |
| | | connection.transport.supportsKeepAlive(connection); |
| | | }, |
| | | |
| | | configureStopReconnectingTimeout = function (connection) { |
| | | var stopReconnectingTimeout, |
| | | onReconnectTimeout; |
| | | |
| | | // Check if this connection has already been configured to stop reconnecting after a specified timeout. |
| | | // Without this check if a connection is stopped then started events will be bound multiple times. |
| | | if (!connection._.configuredStopReconnectingTimeout) { |
| | | onReconnectTimeout = function (connection) { |
| | | var message = signalR._.format(signalR.resources.reconnectTimeout, connection.disconnectTimeout); |
| | | connection.log(message); |
| | | $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ "TimeoutException")]); |
| | | connection.stop(/* async */ false, /* notifyServer */ false); |
| | | }; |
| | | |
| | | connection.reconnecting(function () { |
| | | var connection = this; |
| | | |
| | | // Guard against state changing in a previous user defined even handler |
| | | if (connection.state === signalR.connectionState.reconnecting) { |
| | | stopReconnectingTimeout = window.setTimeout(function () { onReconnectTimeout(connection); }, connection.disconnectTimeout); |
| | | } |
| | | }); |
| | | |
| | | connection.stateChanged(function (data) { |
| | | if (data.oldState === signalR.connectionState.reconnecting) { |
| | | // Clear the pending reconnect timeout check |
| | | window.clearTimeout(stopReconnectingTimeout); |
| | | } |
| | | }); |
| | | |
| | | connection._.configuredStopReconnectingTimeout = true; |
| | | } |
| | | }; |
| | | |
| | | signalR = function (url, qs, logging) { |
| | | /// <summary>Creates a new SignalR connection for the given url</summary> |
| | | /// <param name="url" type="String">The URL of the long polling endpoint</param> |
| | | /// <param name="qs" type="Object"> |
| | | /// [Optional] Custom querystring parameters to add to the connection URL. |
| | | /// If an object, every non-function member will be added to the querystring. |
| | | /// If a string, it's added to the QS as specified. |
| | | /// </param> |
| | | /// <param name="logging" type="Boolean"> |
| | | /// [Optional] A flag indicating whether connection logging is enabled to the browser |
| | | /// console/log. Defaults to false. |
| | | /// </param> |
| | | |
| | | return new signalR.fn.init(url, qs, logging); |
| | | }; |
| | | |
| | | signalR._ = { |
| | | defaultContentType: "application/x-www-form-urlencoded; charset=UTF-8", |
| | | |
| | | ieVersion: (function () { |
| | | var version, |
| | | matches; |
| | | |
| | | if (window.navigator.appName === 'Microsoft Internet Explorer') { |
| | | // Check if the user agent has the pattern "MSIE (one or more numbers).(one or more numbers)"; |
| | | matches = /MSIE ([0-9]+\.[0-9]+)/.exec(window.navigator.userAgent); |
| | | |
| | | if (matches) { |
| | | version = window.parseFloat(matches[1]); |
| | | } |
| | | } |
| | | |
| | | // undefined value means not IE |
| | | return version; |
| | | })(), |
| | | |
| | | error: function (message, source, context) { |
| | | var e = new Error(message); |
| | | e.source = source; |
| | | |
| | | if (typeof context !== "undefined") { |
| | | e.context = context; |
| | | } |
| | | |
| | | return e; |
| | | }, |
| | | |
| | | transportError: function (message, transport, source, context) { |
| | | var e = this.error(message, source, context); |
| | | e.transport = transport ? transport.name : undefined; |
| | | return e; |
| | | }, |
| | | |
| | | format: function () { |
| | | /// <summary>Usage: format("Hi {0}, you are {1}!", "Foo", 100) </summary> |
| | | var s = arguments[0]; |
| | | for (var i = 0; i < arguments.length - 1; i++) { |
| | | s = s.replace("{" + i + "}", arguments[i + 1]); |
| | | } |
| | | return s; |
| | | }, |
| | | |
| | | firefoxMajorVersion: function (userAgent) { |
| | | // Firefox user agents: http://useragentstring.com/pages/Firefox/ |
| | | var matches = userAgent.match(/Firefox\/(\d+)/); |
| | | if (!matches || !matches.length || matches.length < 2) { |
| | | return 0; |
| | | } |
| | | return parseInt(matches[1], 10 /* radix */); |
| | | }, |
| | | |
| | | configurePingInterval: function (connection) { |
| | | var config = connection._.config, |
| | | onFail = function (error) { |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | }; |
| | | |
| | | if (config && !connection._.pingIntervalId && config.pingInterval) { |
| | | connection._.pingIntervalId = window.setInterval(function () { |
| | | signalR.transports._logic.pingServer(connection).fail(onFail); |
| | | }, config.pingInterval); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | signalR.events = events; |
| | | |
| | | signalR.resources = resources; |
| | | |
| | | signalR.ajaxDefaults = ajaxDefaults; |
| | | |
| | | signalR.changeState = changeState; |
| | | |
| | | signalR.isDisconnecting = isDisconnecting; |
| | | |
| | | signalR.connectionState = { |
| | | connecting: 0, |
| | | connected: 1, |
| | | reconnecting: 2, |
| | | disconnected: 4 |
| | | }; |
| | | |
| | | signalR.hub = { |
| | | start: function () { |
| | | // This will get replaced with the real hub connection start method when hubs is referenced correctly |
| | | throw new Error("SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'></script>."); |
| | | } |
| | | }; |
| | | |
| | | // .on() was added in version 1.7.0, .load() was removed in version 3.0.0 so we fallback to .load() if .on() does |
| | | // not exist to not break existing applications |
| | | if (typeof _pageWindow.on == "function") { |
| | | _pageWindow.on("load", function () { _pageLoaded = true; }); |
| | | } |
| | | else { |
| | | _pageWindow.load(function () { _pageLoaded = true; }); |
| | | } |
| | | |
| | | function validateTransport(requestedTransport, connection) { |
| | | /// <summary>Validates the requested transport by cross checking it with the pre-defined signalR.transports</summary> |
| | | /// <param name="requestedTransport" type="Object">The designated transports that the user has specified.</param> |
| | | /// <param name="connection" type="signalR">The connection that will be using the requested transports. Used for logging purposes.</param> |
| | | /// <returns type="Object" /> |
| | | |
| | | if ($.isArray(requestedTransport)) { |
| | | // Go through transport array and remove an "invalid" tranports |
| | | for (var i = requestedTransport.length - 1; i >= 0; i--) { |
| | | var transport = requestedTransport[i]; |
| | | if ($.type(transport) !== "string" || !signalR.transports[transport]) { |
| | | connection.log("Invalid transport: " + transport + ", removing it from the transports list."); |
| | | requestedTransport.splice(i, 1); |
| | | } |
| | | } |
| | | |
| | | // Verify we still have transports left, if we dont then we have invalid transports |
| | | if (requestedTransport.length === 0) { |
| | | connection.log("No transports remain within the specified transport array."); |
| | | requestedTransport = null; |
| | | } |
| | | } else if (!signalR.transports[requestedTransport] && requestedTransport !== "auto") { |
| | | connection.log("Invalid transport: " + requestedTransport.toString() + "."); |
| | | requestedTransport = null; |
| | | } else if (requestedTransport === "auto" && signalR._.ieVersion <= 8) { |
| | | // If we're doing an auto transport and we're IE8 then force longPolling, #1764 |
| | | return ["longPolling"]; |
| | | |
| | | } |
| | | |
| | | return requestedTransport; |
| | | } |
| | | |
| | | function getDefaultPort(protocol) { |
| | | if (protocol === "http:") { |
| | | return 80; |
| | | } else if (protocol === "https:") { |
| | | return 443; |
| | | } |
| | | } |
| | | |
| | | function addDefaultPort(protocol, url) { |
| | | // Remove ports from url. We have to check if there's a / or end of line |
| | | // following the port in order to avoid removing ports such as 8080. |
| | | if (url.match(/:\d+$/)) { |
| | | return url; |
| | | } else { |
| | | return url + ":" + getDefaultPort(protocol); |
| | | } |
| | | } |
| | | |
| | | function ConnectingMessageBuffer(connection, drainCallback) { |
| | | var that = this, |
| | | buffer = []; |
| | | |
| | | that.tryBuffer = function (message) { |
| | | if (connection.state === $.signalR.connectionState.connecting) { |
| | | buffer.push(message); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }; |
| | | |
| | | that.drain = function () { |
| | | // Ensure that the connection is connected when we drain (do not want to drain while a connection is not active) |
| | | if (connection.state === $.signalR.connectionState.connected) { |
| | | while (buffer.length > 0) { |
| | | drainCallback(buffer.shift()); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | that.clear = function () { |
| | | buffer = []; |
| | | }; |
| | | } |
| | | |
| | | signalR.fn = signalR.prototype = { |
| | | init: function (url, qs, logging) { |
| | | var $connection = $(this); |
| | | |
| | | this.url = url; |
| | | this.qs = qs; |
| | | this.lastError = null; |
| | | this._ = { |
| | | keepAliveData: {}, |
| | | connectingMessageBuffer: new ConnectingMessageBuffer(this, function (message) { |
| | | $connection.triggerHandler(events.onReceived, [message]); |
| | | }), |
| | | lastMessageAt: new Date().getTime(), |
| | | lastActiveAt: new Date().getTime(), |
| | | beatInterval: 5000, // Default value, will only be overridden if keep alive is enabled, |
| | | beatHandle: null, |
| | | totalTransportConnectTimeout: 0 // This will be the sum of the TransportConnectTimeout sent in response to negotiate and connection.transportConnectTimeout |
| | | }; |
| | | if (typeof (logging) === "boolean") { |
| | | this.logging = logging; |
| | | } |
| | | }, |
| | | |
| | | _parseResponse: function (response) { |
| | | var that = this; |
| | | |
| | | if (!response) { |
| | | return response; |
| | | } else if (typeof response === "string") { |
| | | return that.json.parse(response); |
| | | } else { |
| | | return response; |
| | | } |
| | | }, |
| | | |
| | | _originalJson: window.JSON, |
| | | |
| | | json: window.JSON, |
| | | |
| | | isCrossDomain: function (url, against) { |
| | | /// <summary>Checks if url is cross domain</summary> |
| | | /// <param name="url" type="String">The base URL</param> |
| | | /// <param name="against" type="Object"> |
| | | /// An optional argument to compare the URL against, if not specified it will be set to window.location. |
| | | /// If specified it must contain a protocol and a host property. |
| | | /// </param> |
| | | var link; |
| | | |
| | | url = $.trim(url); |
| | | |
| | | against = against || window.location; |
| | | |
| | | if (url.indexOf("http") !== 0) { |
| | | return false; |
| | | } |
| | | |
| | | // Create an anchor tag. |
| | | link = window.document.createElement("a"); |
| | | link.href = url; |
| | | |
| | | // When checking for cross domain we have to special case port 80 because the window.location will remove the |
| | | return link.protocol + addDefaultPort(link.protocol, link.host) !== against.protocol + addDefaultPort(against.protocol, against.host); |
| | | }, |
| | | |
| | | ajaxDataType: "text", |
| | | |
| | | contentType: "application/json; charset=UTF-8", |
| | | |
| | | logging: false, |
| | | |
| | | state: signalR.connectionState.disconnected, |
| | | |
| | | clientProtocol: "1.5", |
| | | |
| | | reconnectDelay: 2000, |
| | | |
| | | transportConnectTimeout: 0, |
| | | |
| | | disconnectTimeout: 30000, // This should be set by the server in response to the negotiate request (30s default) |
| | | |
| | | reconnectWindow: 30000, // This should be set by the server in response to the negotiate request |
| | | |
| | | keepAliveWarnAt: 2 / 3, // Warn user of slow connection if we breach the X% mark of the keep alive timeout |
| | | |
| | | start: function (options, callback) { |
| | | /// <summary>Starts the connection</summary> |
| | | /// <param name="options" type="Object">Options map</param> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection has started</param> |
| | | var connection = this, |
| | | config = { |
| | | pingInterval: 300000, |
| | | waitForPageLoad: true, |
| | | transport: "auto", |
| | | jsonp: false |
| | | }, |
| | | initialize, |
| | | deferred = connection._deferral || $.Deferred(), // Check to see if there is a pre-existing deferral that's being built on, if so we want to keep using it |
| | | parser = window.document.createElement("a"); |
| | | |
| | | connection.lastError = null; |
| | | |
| | | // Persist the deferral so that if start is called multiple times the same deferral is used. |
| | | connection._deferral = deferred; |
| | | |
| | | if (!connection.json) { |
| | | // no JSON! |
| | | throw new Error("SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8."); |
| | | } |
| | | |
| | | if ($.type(options) === "function") { |
| | | // Support calling with single callback parameter |
| | | callback = options; |
| | | } else if ($.type(options) === "object") { |
| | | $.extend(config, options); |
| | | if ($.type(config.callback) === "function") { |
| | | callback = config.callback; |
| | | } |
| | | } |
| | | |
| | | config.transport = validateTransport(config.transport, connection); |
| | | |
| | | // If the transport is invalid throw an error and abort start |
| | | if (!config.transport) { |
| | | throw new Error("SignalR: Invalid transport(s) specified, aborting start."); |
| | | } |
| | | |
| | | connection._.config = config; |
| | | |
| | | // Check to see if start is being called prior to page load |
| | | // If waitForPageLoad is true we then want to re-direct function call to the window load event |
| | | if (!_pageLoaded && config.waitForPageLoad === true) { |
| | | connection._.deferredStartHandler = function () { |
| | | connection.start(options, callback); |
| | | }; |
| | | _pageWindow.bind("load", connection._.deferredStartHandler); |
| | | |
| | | return deferred.promise(); |
| | | } |
| | | |
| | | // If we're already connecting just return the same deferral as the original connection start |
| | | if (connection.state === signalR.connectionState.connecting) { |
| | | return deferred.promise(); |
| | | } else if (changeState(connection, |
| | | signalR.connectionState.disconnected, |
| | | signalR.connectionState.connecting) === false) { |
| | | // We're not connecting so try and transition into connecting. |
| | | // If we fail to transition then we're either in connected or reconnecting. |
| | | |
| | | deferred.resolve(connection); |
| | | return deferred.promise(); |
| | | } |
| | | |
| | | configureStopReconnectingTimeout(connection); |
| | | |
| | | // Resolve the full url |
| | | parser.href = connection.url; |
| | | if (!parser.protocol || parser.protocol === ":") { |
| | | connection.protocol = window.document.location.protocol; |
| | | connection.host = parser.host || window.document.location.host; |
| | | } else { |
| | | connection.protocol = parser.protocol; |
| | | connection.host = parser.host; |
| | | } |
| | | |
| | | connection.baseUrl = connection.protocol + "//" + connection.host; |
| | | |
| | | // Set the websocket protocol |
| | | connection.wsProtocol = connection.protocol === "https:" ? "wss://" : "ws://"; |
| | | |
| | | // If jsonp with no/auto transport is specified, then set the transport to long polling |
| | | // since that is the only transport for which jsonp really makes sense. |
| | | // Some developers might actually choose to specify jsonp for same origin requests |
| | | // as demonstrated by Issue #623. |
| | | if (config.transport === "auto" && config.jsonp === true) { |
| | | config.transport = "longPolling"; |
| | | } |
| | | |
| | | // If the url is protocol relative, prepend the current windows protocol to the url. |
| | | if (connection.url.indexOf("//") === 0) { |
| | | connection.url = window.location.protocol + connection.url; |
| | | connection.log("Protocol relative URL detected, normalizing it to '" + connection.url + "'."); |
| | | } |
| | | |
| | | if (this.isCrossDomain(connection.url)) { |
| | | connection.log("Auto detected cross domain url."); |
| | | |
| | | if (config.transport === "auto") { |
| | | // TODO: Support XDM with foreverFrame |
| | | config.transport = ["webSockets", "serverSentEvents", "longPolling"]; |
| | | } |
| | | |
| | | if (typeof (config.withCredentials) === "undefined") { |
| | | config.withCredentials = true; |
| | | } |
| | | |
| | | // Determine if jsonp is the only choice for negotiation, ajaxSend and ajaxAbort. |
| | | // i.e. if the browser doesn't supports CORS |
| | | // If it is, ignore any preference to the contrary, and switch to jsonp. |
| | | if (!config.jsonp) { |
| | | config.jsonp = !$.support.cors; |
| | | |
| | | if (config.jsonp) { |
| | | connection.log("Using jsonp because this browser doesn't support CORS."); |
| | | } |
| | | } |
| | | |
| | | connection.contentType = signalR._.defaultContentType; |
| | | } |
| | | |
| | | connection.withCredentials = config.withCredentials; |
| | | |
| | | connection.ajaxDataType = config.jsonp ? "jsonp" : "text"; |
| | | |
| | | $(connection).bind(events.onStart, function (e, data) { |
| | | if ($.type(callback) === "function") { |
| | | callback.call(connection); |
| | | } |
| | | deferred.resolve(connection); |
| | | }); |
| | | |
| | | connection._.initHandler = signalR.transports._logic.initHandler(connection); |
| | | |
| | | initialize = function (transports, index) { |
| | | var noTransportError = signalR._.error(resources.noTransportOnInit); |
| | | |
| | | index = index || 0; |
| | | if (index >= transports.length) { |
| | | if (index === 0) { |
| | | connection.log("No transports supported by the server were selected."); |
| | | } else if (index === 1) { |
| | | connection.log("No fallback transports were selected."); |
| | | } else { |
| | | connection.log("Fallback transports exhausted."); |
| | | } |
| | | |
| | | // No transport initialized successfully |
| | | $(connection).triggerHandler(events.onError, [noTransportError]); |
| | | deferred.reject(noTransportError); |
| | | // Stop the connection if it has connected and move it into the disconnected state |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | // The connection was aborted |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | return; |
| | | } |
| | | |
| | | var transportName = transports[index], |
| | | transport = signalR.transports[transportName], |
| | | onFallback = function () { |
| | | initialize(transports, index + 1); |
| | | }; |
| | | |
| | | connection.transport = transport; |
| | | |
| | | try { |
| | | connection._.initHandler.start(transport, function () { // success |
| | | // Firefox 11+ doesn't allow sync XHR withCredentials: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials |
| | | var isFirefox11OrGreater = signalR._.firefoxMajorVersion(window.navigator.userAgent) >= 11, |
| | | asyncAbort = !!connection.withCredentials && isFirefox11OrGreater; |
| | | |
| | | connection.log("The start request succeeded. Transitioning to the connected state."); |
| | | |
| | | if (supportsKeepAlive(connection)) { |
| | | signalR.transports._logic.monitorKeepAlive(connection); |
| | | } |
| | | |
| | | signalR.transports._logic.startHeartbeat(connection); |
| | | |
| | | // Used to ensure low activity clients maintain their authentication. |
| | | // Must be configured once a transport has been decided to perform valid ping requests. |
| | | signalR._.configurePingInterval(connection); |
| | | |
| | | if (!changeState(connection, |
| | | signalR.connectionState.connecting, |
| | | signalR.connectionState.connected)) { |
| | | connection.log("WARNING! The connection was not in the connecting state."); |
| | | } |
| | | |
| | | // Drain any incoming buffered messages (messages that came in prior to connect) |
| | | connection._.connectingMessageBuffer.drain(); |
| | | |
| | | $(connection).triggerHandler(events.onStart); |
| | | |
| | | // wire the stop handler for when the user leaves the page |
| | | _pageWindow.bind("unload", function () { |
| | | connection.log("Window unloading, stopping the connection."); |
| | | |
| | | connection.stop(asyncAbort); |
| | | }); |
| | | |
| | | if (isFirefox11OrGreater) { |
| | | // Firefox does not fire cross-domain XHRs in the normal unload handler on tab close. |
| | | // #2400 |
| | | _pageWindow.bind("beforeunload", function () { |
| | | // If connection.stop() runs runs in beforeunload and fails, it will also fail |
| | | // in unload unless connection.stop() runs after a timeout. |
| | | window.setTimeout(function () { |
| | | connection.stop(asyncAbort); |
| | | }, 0); |
| | | }); |
| | | } |
| | | }, onFallback); |
| | | } |
| | | catch (error) { |
| | | connection.log(transport.name + " transport threw '" + error.message + "' when attempting to start."); |
| | | onFallback(); |
| | | } |
| | | }; |
| | | |
| | | var url = connection.url + "/negotiate", |
| | | onFailed = function (error, connection) { |
| | | var err = signalR._.error(resources.errorOnNegotiate, error, connection._.negotiateRequest); |
| | | |
| | | $(connection).triggerHandler(events.onError, err); |
| | | deferred.reject(err); |
| | | // Stop the connection if negotiate failed |
| | | connection.stop(); |
| | | }; |
| | | |
| | | $(connection).triggerHandler(events.onStarting); |
| | | |
| | | url = signalR.transports._logic.prepareQueryString(connection, url); |
| | | |
| | | connection.log("Negotiating with '" + url + "'."); |
| | | |
| | | // Save the ajax negotiate request object so we can abort it if stop is called while the request is in flight. |
| | | connection._.negotiateRequest = signalR.transports._logic.ajax(connection, { |
| | | url: url, |
| | | error: function (error, statusText) { |
| | | // We don't want to cause any errors if we're aborting our own negotiate request. |
| | | if (statusText !== _negotiateAbortText) { |
| | | onFailed(error, connection); |
| | | } else { |
| | | // This rejection will noop if the deferred has already been resolved or rejected. |
| | | deferred.reject(signalR._.error(resources.stoppedWhileNegotiating, null /* error */, connection._.negotiateRequest)); |
| | | } |
| | | }, |
| | | success: function (result) { |
| | | var res, |
| | | keepAliveData, |
| | | protocolError, |
| | | transports = [], |
| | | supportedTransports = []; |
| | | |
| | | try { |
| | | res = connection._parseResponse(result); |
| | | } catch (error) { |
| | | onFailed(signalR._.error(resources.errorParsingNegotiateResponse, error), connection); |
| | | return; |
| | | } |
| | | |
| | | keepAliveData = connection._.keepAliveData; |
| | | connection.appRelativeUrl = res.Url; |
| | | connection.id = res.ConnectionId; |
| | | connection.token = res.ConnectionToken; |
| | | connection.webSocketServerUrl = res.WebSocketServerUrl; |
| | | |
| | | // The long poll timeout is the ConnectionTimeout plus 10 seconds |
| | | connection._.pollTimeout = res.ConnectionTimeout * 1000 + 10000; // in ms |
| | | |
| | | // Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect |
| | | // after res.DisconnectTimeout seconds. |
| | | connection.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms |
| | | |
| | | // Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout |
| | | connection._.totalTransportConnectTimeout = connection.transportConnectTimeout + res.TransportConnectTimeout * 1000; |
| | | |
| | | // If we have a keep alive |
| | | if (res.KeepAliveTimeout) { |
| | | // Register the keep alive data as activated |
| | | keepAliveData.activated = true; |
| | | |
| | | // Timeout to designate when to force the connection into reconnecting converted to milliseconds |
| | | keepAliveData.timeout = res.KeepAliveTimeout * 1000; |
| | | |
| | | // Timeout to designate when to warn the developer that the connection may be dead or is not responding. |
| | | keepAliveData.timeoutWarning = keepAliveData.timeout * connection.keepAliveWarnAt; |
| | | |
| | | // Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes |
| | | connection._.beatInterval = (keepAliveData.timeout - keepAliveData.timeoutWarning) / 3; |
| | | } else { |
| | | keepAliveData.activated = false; |
| | | } |
| | | |
| | | connection.reconnectWindow = connection.disconnectTimeout + (keepAliveData.timeout || 0); |
| | | |
| | | if (!res.ProtocolVersion || res.ProtocolVersion !== connection.clientProtocol) { |
| | | protocolError = signalR._.error(signalR._.format(resources.protocolIncompatible, connection.clientProtocol, res.ProtocolVersion)); |
| | | $(connection).triggerHandler(events.onError, [protocolError]); |
| | | deferred.reject(protocolError); |
| | | |
| | | return; |
| | | } |
| | | |
| | | $.each(signalR.transports, function (key) { |
| | | if ((key.indexOf("_") === 0) || (key === "webSockets" && !res.TryWebSockets)) { |
| | | return true; |
| | | } |
| | | supportedTransports.push(key); |
| | | }); |
| | | |
| | | if ($.isArray(config.transport)) { |
| | | $.each(config.transport, function (_, transport) { |
| | | if ($.inArray(transport, supportedTransports) >= 0) { |
| | | transports.push(transport); |
| | | } |
| | | }); |
| | | } else if (config.transport === "auto") { |
| | | transports = supportedTransports; |
| | | } else if ($.inArray(config.transport, supportedTransports) >= 0) { |
| | | transports.push(config.transport); |
| | | } |
| | | |
| | | initialize(transports); |
| | | } |
| | | }); |
| | | |
| | | return deferred.promise(); |
| | | }, |
| | | |
| | | starting: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked before anything is sent over the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute before the connection is fully instantiated.</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onStarting, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | send: function (data) { |
| | | /// <summary>Sends data over the connection</summary> |
| | | /// <param name="data" type="String">The data to send over the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | // Connection hasn't been started yet |
| | | throw new Error("SignalR: Connection must be started before data can be sent. Call .start() before .send()"); |
| | | } |
| | | |
| | | if (connection.state === signalR.connectionState.connecting) { |
| | | // Connection hasn't been started yet |
| | | throw new Error("SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started."); |
| | | } |
| | | |
| | | connection.transport.send(connection, data); |
| | | // REVIEW: Should we return deferred here? |
| | | return connection; |
| | | }, |
| | | |
| | | received: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked after anything is received over the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when any data is received on the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReceived, function (e, data) { |
| | | callback.call(connection, data); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | stateChanged: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the connection state changes</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection state changes</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onStateChanged, function (e, data) { |
| | | callback.call(connection, data); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | error: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked after an error occurs with the connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when an error occurs on the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onError, function (e, errorData, sendData) { |
| | | connection.lastError = errorData; |
| | | // In practice 'errorData' is the SignalR built error object. |
| | | // In practice 'sendData' is undefined for all error events except those triggered by |
| | | // 'ajaxSend' and 'webSockets.send'.'sendData' is the original send payload. |
| | | callback.call(connection, errorData, sendData); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | disconnected: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the client disconnects</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is broken</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onDisconnect, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | connectionSlow: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the client detects a slow connection</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is slow</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onConnectionSlow, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | |
| | | return connection; |
| | | }, |
| | | |
| | | reconnecting: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the underlying transport begins reconnecting</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection enters a reconnecting state</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReconnecting, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | reconnected: function (callback) { |
| | | /// <summary>Adds a callback that will be invoked when the underlying transport reconnects</summary> |
| | | /// <param name="callback" type="Function">A callback function to execute when the connection is restored</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this; |
| | | $(connection).bind(events.onReconnect, function (e, data) { |
| | | callback.call(connection); |
| | | }); |
| | | return connection; |
| | | }, |
| | | |
| | | stop: function (async, notifyServer) { |
| | | /// <summary>Stops listening</summary> |
| | | /// <param name="async" type="Boolean">Whether or not to asynchronously abort the connection</param> |
| | | /// <param name="notifyServer" type="Boolean">Whether we want to notify the server that we are aborting the connection</param> |
| | | /// <returns type="signalR" /> |
| | | var connection = this, |
| | | // Save deferral because this is always cleaned up |
| | | deferral = connection._deferral; |
| | | |
| | | // Verify that we've bound a load event. |
| | | if (connection._.deferredStartHandler) { |
| | | // Unbind the event. |
| | | _pageWindow.unbind("load", connection._.deferredStartHandler); |
| | | } |
| | | |
| | | // Always clean up private non-timeout based state. |
| | | delete connection._.config; |
| | | delete connection._.deferredStartHandler; |
| | | |
| | | // This needs to be checked despite the connection state because a connection start can be deferred until page load. |
| | | // If we've deferred the start due to a page load we need to unbind the "onLoad" -> start event. |
| | | if (!_pageLoaded && (!connection._.config || connection._.config.waitForPageLoad === true)) { |
| | | connection.log("Stopping connection prior to negotiate."); |
| | | |
| | | // If we have a deferral we should reject it |
| | | if (deferral) { |
| | | deferral.reject(signalR._.error(resources.stoppedWhileLoading)); |
| | | } |
| | | |
| | | // Short-circuit because the start has not been fully started. |
| | | return; |
| | | } |
| | | |
| | | if (connection.state === signalR.connectionState.disconnected) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("Stopping connection."); |
| | | |
| | | // Clear this no matter what |
| | | window.clearTimeout(connection._.beatHandle); |
| | | window.clearInterval(connection._.pingIntervalId); |
| | | |
| | | if (connection.transport) { |
| | | connection.transport.stop(connection); |
| | | |
| | | if (notifyServer !== false) { |
| | | connection.transport.abort(connection, async); |
| | | } |
| | | |
| | | if (supportsKeepAlive(connection)) { |
| | | signalR.transports._logic.stopMonitoringKeepAlive(connection); |
| | | } |
| | | |
| | | connection.transport = null; |
| | | } |
| | | |
| | | if (connection._.negotiateRequest) { |
| | | // If the negotiation request has already completed this will noop. |
| | | connection._.negotiateRequest.abort(_negotiateAbortText); |
| | | delete connection._.negotiateRequest; |
| | | } |
| | | |
| | | // Ensure that initHandler.stop() is called before connection._deferral is deleted |
| | | if (connection._.initHandler) { |
| | | connection._.initHandler.stop(); |
| | | } |
| | | |
| | | delete connection._deferral; |
| | | delete connection.messageId; |
| | | delete connection.groupsToken; |
| | | delete connection.id; |
| | | delete connection._.pingIntervalId; |
| | | delete connection._.lastMessageAt; |
| | | delete connection._.lastActiveAt; |
| | | |
| | | // Clear out our message buffer |
| | | connection._.connectingMessageBuffer.clear(); |
| | | |
| | | // Clean up this event |
| | | $(connection).unbind(events.onStart); |
| | | |
| | | // Trigger the disconnect event |
| | | changeState(connection, connection.state, signalR.connectionState.disconnected); |
| | | $(connection).triggerHandler(events.onDisconnect); |
| | | |
| | | return connection; |
| | | }, |
| | | |
| | | log: function (msg) { |
| | | log(msg, this.logging); |
| | | } |
| | | }; |
| | | |
| | | signalR.fn.init.prototype = signalR.fn; |
| | | |
| | | signalR.noConflict = function () { |
| | | /// <summary>Reinstates the original value of $.connection and returns the signalR object for manual assignment</summary> |
| | | /// <returns type="signalR" /> |
| | | if ($.connection === signalR) { |
| | | $.connection = _connection; |
| | | } |
| | | return signalR; |
| | | }; |
| | | |
| | | if ($.connection) { |
| | | _connection = $.connection; |
| | | } |
| | | |
| | | $.connection = $.signalR = signalR; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.common.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | startAbortText = "__Start Aborted__", |
| | | transportLogic; |
| | | |
| | | signalR.transports = {}; |
| | | |
| | | function beat(connection) { |
| | | if (connection._.keepAliveData.monitoring) { |
| | | checkIfAlive(connection); |
| | | } |
| | | |
| | | // Ensure that we successfully marked active before continuing the heartbeat. |
| | | if (transportLogic.markActive(connection)) { |
| | | connection._.beatHandle = window.setTimeout(function () { |
| | | beat(connection); |
| | | }, connection._.beatInterval); |
| | | } |
| | | } |
| | | |
| | | function checkIfAlive(connection) { |
| | | var keepAliveData = connection._.keepAliveData, |
| | | timeElapsed; |
| | | |
| | | // Only check if we're connected |
| | | if (connection.state === signalR.connectionState.connected) { |
| | | timeElapsed = new Date().getTime() - connection._.lastMessageAt; |
| | | |
| | | // Check if the keep alive has completely timed out |
| | | if (timeElapsed >= keepAliveData.timeout) { |
| | | connection.log("Keep alive timed out. Notifying transport that connection has been lost."); |
| | | |
| | | // Notify transport that the connection has been lost |
| | | connection.transport.lostConnection(connection); |
| | | } else if (timeElapsed >= keepAliveData.timeoutWarning) { |
| | | // This is to assure that the user only gets a single warning |
| | | if (!keepAliveData.userNotified) { |
| | | connection.log("Keep alive has been missed, connection may be dead/slow."); |
| | | $(connection).triggerHandler(events.onConnectionSlow); |
| | | keepAliveData.userNotified = true; |
| | | } |
| | | } else { |
| | | keepAliveData.userNotified = false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | function getAjaxUrl(connection, path) { |
| | | var url = connection.url + path; |
| | | |
| | | if (connection.transport) { |
| | | url += "?transport=" + connection.transport.name; |
| | | } |
| | | |
| | | return transportLogic.prepareQueryString(connection, url); |
| | | } |
| | | |
| | | function InitHandler(connection) { |
| | | this.connection = connection; |
| | | |
| | | this.startRequested = false; |
| | | this.startCompleted = false; |
| | | this.connectionStopped = false; |
| | | } |
| | | |
| | | InitHandler.prototype = { |
| | | start: function (transport, onSuccess, onFallback) { |
| | | var that = this, |
| | | connection = that.connection, |
| | | failCalled = false; |
| | | |
| | | if (that.startRequested || that.connectionStopped) { |
| | | connection.log("WARNING! " + transport.name + " transport cannot be started. Initialization ongoing or completed."); |
| | | return; |
| | | } |
| | | |
| | | connection.log(transport.name + " transport starting."); |
| | | |
| | | transport.start(connection, function () { |
| | | if (!failCalled) { |
| | | that.initReceived(transport, onSuccess); |
| | | } |
| | | }, function (error) { |
| | | // Don't allow the same transport to cause onFallback to be called twice |
| | | if (!failCalled) { |
| | | failCalled = true; |
| | | that.transportFailed(transport, error, onFallback); |
| | | } |
| | | |
| | | // Returns true if the transport should stop; |
| | | // false if it should attempt to reconnect |
| | | return !that.startCompleted || that.connectionStopped; |
| | | }); |
| | | |
| | | that.transportTimeoutHandle = window.setTimeout(function () { |
| | | if (!failCalled) { |
| | | failCalled = true; |
| | | connection.log(transport.name + " transport timed out when trying to connect."); |
| | | that.transportFailed(transport, undefined, onFallback); |
| | | } |
| | | }, connection._.totalTransportConnectTimeout); |
| | | }, |
| | | |
| | | stop: function () { |
| | | this.connectionStopped = true; |
| | | window.clearTimeout(this.transportTimeoutHandle); |
| | | signalR.transports._logic.tryAbortStartRequest(this.connection); |
| | | }, |
| | | |
| | | initReceived: function (transport, onSuccess) { |
| | | var that = this, |
| | | connection = that.connection; |
| | | |
| | | if (that.startRequested) { |
| | | connection.log("WARNING! The client received multiple init messages."); |
| | | return; |
| | | } |
| | | |
| | | if (that.connectionStopped) { |
| | | return; |
| | | } |
| | | |
| | | that.startRequested = true; |
| | | window.clearTimeout(that.transportTimeoutHandle); |
| | | |
| | | connection.log(transport.name + " transport connected. Initiating start request."); |
| | | signalR.transports._logic.ajaxStart(connection, function () { |
| | | that.startCompleted = true; |
| | | onSuccess(); |
| | | }); |
| | | }, |
| | | |
| | | transportFailed: function (transport, error, onFallback) { |
| | | var connection = this.connection, |
| | | deferred = connection._deferral, |
| | | wrappedError; |
| | | |
| | | if (this.connectionStopped) { |
| | | return; |
| | | } |
| | | |
| | | window.clearTimeout(this.transportTimeoutHandle); |
| | | |
| | | if (!this.startRequested) { |
| | | transport.stop(connection); |
| | | |
| | | connection.log(transport.name + " transport failed to connect. Attempting to fall back."); |
| | | onFallback(); |
| | | } else if (!this.startCompleted) { |
| | | // Do not attempt to fall back if a start request is ongoing during a transport failure. |
| | | // Instead, trigger an error and stop the connection. |
| | | wrappedError = signalR._.error(signalR.resources.errorDuringStartRequest, error); |
| | | |
| | | connection.log(transport.name + " transport failed during the start request. Stopping the connection."); |
| | | $(connection).triggerHandler(events.onError, [wrappedError]); |
| | | if (deferred) { |
| | | deferred.reject(wrappedError); |
| | | } |
| | | |
| | | connection.stop(); |
| | | } else { |
| | | // The start request has completed, but the connection has not stopped. |
| | | // No need to do anything here. The transport should attempt its normal reconnect logic. |
| | | } |
| | | } |
| | | }; |
| | | |
| | | transportLogic = signalR.transports._logic = { |
| | | ajax: function (connection, options) { |
| | | return $.ajax( |
| | | $.extend(/*deep copy*/ true, {}, $.signalR.ajaxDefaults, { |
| | | type: "GET", |
| | | data: {}, |
| | | xhrFields: { withCredentials: connection.withCredentials }, |
| | | contentType: connection.contentType, |
| | | dataType: connection.ajaxDataType |
| | | }, options)); |
| | | }, |
| | | |
| | | pingServer: function (connection) { |
| | | /// <summary>Pings the server</summary> |
| | | /// <param name="connection" type="signalr">Connection associated with the server ping</param> |
| | | /// <returns type="signalR" /> |
| | | var url, |
| | | xhr, |
| | | deferral = $.Deferred(); |
| | | |
| | | if (connection.transport) { |
| | | url = connection.url + "/ping"; |
| | | |
| | | url = transportLogic.addQs(url, connection.qs); |
| | | |
| | | xhr = transportLogic.ajax(connection, { |
| | | url: url, |
| | | success: function (result) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.pingServerFailedParse, |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | if (data.Response === "pong") { |
| | | deferral.resolve(); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR._.format(signalR.resources.pingServerFailedInvalidResponse, result), |
| | | connection.transport, |
| | | null /* error */, |
| | | xhr |
| | | ) |
| | | ); |
| | | } |
| | | }, |
| | | error: function (error) { |
| | | if (error.status === 401 || error.status === 403) { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR._.format(signalR.resources.pingServerFailedStatusCode, error.status), |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | connection.stop(); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.pingServerFailed, |
| | | connection.transport, |
| | | error, |
| | | xhr |
| | | ) |
| | | ); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | else { |
| | | deferral.reject( |
| | | signalR._.transportError( |
| | | signalR.resources.noConnectionTransport, |
| | | connection.transport |
| | | ) |
| | | ); |
| | | } |
| | | |
| | | return deferral.promise(); |
| | | }, |
| | | |
| | | prepareQueryString: function (connection, url) { |
| | | var preparedUrl; |
| | | |
| | | // Use addQs to start since it handles the ?/& prefix for us |
| | | preparedUrl = transportLogic.addQs(url, "clientProtocol=" + connection.clientProtocol); |
| | | |
| | | // Add the user-specified query string params if any |
| | | preparedUrl = transportLogic.addQs(preparedUrl, connection.qs); |
| | | |
| | | if (connection.token) { |
| | | preparedUrl += "&connectionToken=" + window.encodeURIComponent(connection.token); |
| | | } |
| | | |
| | | if (connection.data) { |
| | | preparedUrl += "&connectionData=" + window.encodeURIComponent(connection.data); |
| | | } |
| | | |
| | | return preparedUrl; |
| | | }, |
| | | |
| | | addQs: function (url, qs) { |
| | | var appender = url.indexOf("?") !== -1 ? "&" : "?", |
| | | firstChar; |
| | | |
| | | if (!qs) { |
| | | return url; |
| | | } |
| | | |
| | | if (typeof (qs) === "object") { |
| | | return url + appender + $.param(qs); |
| | | } |
| | | |
| | | if (typeof (qs) === "string") { |
| | | firstChar = qs.charAt(0); |
| | | |
| | | if (firstChar === "?" || firstChar === "&") { |
| | | appender = ""; |
| | | } |
| | | |
| | | return url + appender + qs; |
| | | } |
| | | |
| | | throw new Error("Query string property must be either a string or object."); |
| | | }, |
| | | |
| | | // BUG #2953: The url needs to be same otherwise it will cause a memory leak |
| | | getUrl: function (connection, transport, reconnecting, poll, ajaxPost) { |
| | | /// <summary>Gets the url for making a GET based connect request</summary> |
| | | var baseUrl = transport === "webSockets" ? "" : connection.baseUrl, |
| | | url = baseUrl + connection.appRelativeUrl, |
| | | qs = "transport=" + transport; |
| | | |
| | | if (!ajaxPost && connection.groupsToken) { |
| | | qs += "&groupsToken=" + window.encodeURIComponent(connection.groupsToken); |
| | | } |
| | | |
| | | if (!reconnecting) { |
| | | url += "/connect"; |
| | | } else { |
| | | if (poll) { |
| | | // longPolling transport specific |
| | | url += "/poll"; |
| | | } else { |
| | | url += "/reconnect"; |
| | | } |
| | | |
| | | if (!ajaxPost && connection.messageId) { |
| | | qs += "&messageId=" + window.encodeURIComponent(connection.messageId); |
| | | } |
| | | } |
| | | url += "?" + qs; |
| | | url = transportLogic.prepareQueryString(connection, url); |
| | | |
| | | if (!ajaxPost) { |
| | | url += "&tid=" + Math.floor(Math.random() * 11); |
| | | } |
| | | |
| | | return url; |
| | | }, |
| | | |
| | | maximizePersistentResponse: function (minPersistentResponse) { |
| | | return { |
| | | MessageId: minPersistentResponse.C, |
| | | Messages: minPersistentResponse.M, |
| | | Initialized: typeof (minPersistentResponse.S) !== "undefined" ? true : false, |
| | | ShouldReconnect: typeof (minPersistentResponse.T) !== "undefined" ? true : false, |
| | | LongPollDelay: minPersistentResponse.L, |
| | | GroupsToken: minPersistentResponse.G |
| | | }; |
| | | }, |
| | | |
| | | updateGroups: function (connection, groupsToken) { |
| | | if (groupsToken) { |
| | | connection.groupsToken = groupsToken; |
| | | } |
| | | }, |
| | | |
| | | stringifySend: function (connection, message) { |
| | | if (typeof (message) === "string" || typeof (message) === "undefined" || message === null) { |
| | | return message; |
| | | } |
| | | return connection.json.stringify(message); |
| | | }, |
| | | |
| | | ajaxSend: function (connection, data) { |
| | | var payload = transportLogic.stringifySend(connection, data), |
| | | url = getAjaxUrl(connection, "/send"), |
| | | xhr, |
| | | onFail = function (error, connection) { |
| | | $(connection).triggerHandler(events.onError, [signalR._.transportError(signalR.resources.sendFailed, connection.transport, error, xhr), data]); |
| | | }; |
| | | |
| | | |
| | | xhr = transportLogic.ajax(connection, { |
| | | url: url, |
| | | type: connection.ajaxDataType === "jsonp" ? "GET" : "POST", |
| | | contentType: signalR._.defaultContentType, |
| | | data: { |
| | | data: payload |
| | | }, |
| | | success: function (result) { |
| | | var res; |
| | | |
| | | if (result) { |
| | | try { |
| | | res = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | onFail(error, connection); |
| | | connection.stop(); |
| | | return; |
| | | } |
| | | |
| | | transportLogic.triggerReceived(connection, res); |
| | | } |
| | | }, |
| | | error: function (error, textStatus) { |
| | | if (textStatus === "abort" || textStatus === "parsererror") { |
| | | // The parsererror happens for sends that don't return any data, and hence |
| | | // don't write the jsonp callback to the response. This is harder to fix on the server |
| | | // so just hack around it on the client for now. |
| | | return; |
| | | } |
| | | |
| | | onFail(error, connection); |
| | | } |
| | | }); |
| | | |
| | | return xhr; |
| | | }, |
| | | |
| | | ajaxAbort: function (connection, async) { |
| | | if (typeof (connection.transport) === "undefined") { |
| | | return; |
| | | } |
| | | |
| | | // Async by default unless explicitly overidden |
| | | async = typeof async === "undefined" ? true : async; |
| | | |
| | | var url = getAjaxUrl(connection, "/abort"); |
| | | |
| | | transportLogic.ajax(connection, { |
| | | url: url, |
| | | async: async, |
| | | timeout: 1000, |
| | | type: "POST" |
| | | }); |
| | | |
| | | connection.log("Fired ajax abort async = " + async + "."); |
| | | }, |
| | | |
| | | ajaxStart: function (connection, onSuccess) { |
| | | var rejectDeferred = function (error) { |
| | | var deferred = connection._deferral; |
| | | if (deferred) { |
| | | deferred.reject(error); |
| | | } |
| | | }, |
| | | triggerStartError = function (error) { |
| | | connection.log("The start request failed. Stopping the connection."); |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | rejectDeferred(error); |
| | | connection.stop(); |
| | | }; |
| | | |
| | | connection._.startRequest = transportLogic.ajax(connection, { |
| | | url: getAjaxUrl(connection, "/start"), |
| | | success: function (result, statusText, xhr) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(result); |
| | | } catch (error) { |
| | | triggerStartError(signalR._.error( |
| | | signalR._.format(signalR.resources.errorParsingStartResponse, result), |
| | | error, xhr)); |
| | | return; |
| | | } |
| | | |
| | | if (data.Response === "started") { |
| | | onSuccess(); |
| | | } else { |
| | | triggerStartError(signalR._.error( |
| | | signalR._.format(signalR.resources.invalidStartResponse, result), |
| | | null /* error */, xhr)); |
| | | } |
| | | }, |
| | | error: function (xhr, statusText, error) { |
| | | if (statusText !== startAbortText) { |
| | | triggerStartError(signalR._.error( |
| | | signalR.resources.errorDuringStartRequest, |
| | | error, xhr)); |
| | | } else { |
| | | // Stop has been called, no need to trigger the error handler |
| | | // or stop the connection again with onStartError |
| | | connection.log("The start request aborted because connection.stop() was called."); |
| | | rejectDeferred(signalR._.error( |
| | | signalR.resources.stoppedDuringStartRequest, |
| | | null /* error */, xhr)); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | tryAbortStartRequest: function (connection) { |
| | | if (connection._.startRequest) { |
| | | // If the start request has already completed this will noop. |
| | | connection._.startRequest.abort(startAbortText); |
| | | delete connection._.startRequest; |
| | | } |
| | | }, |
| | | |
| | | tryInitialize: function (connection, persistentResponse, onInitialized) { |
| | | if (persistentResponse.Initialized && onInitialized) { |
| | | onInitialized(); |
| | | } else if (persistentResponse.Initialized) { |
| | | connection.log("WARNING! The client received an init message after reconnecting."); |
| | | } |
| | | |
| | | }, |
| | | |
| | | triggerReceived: function (connection, data) { |
| | | if (!connection._.connectingMessageBuffer.tryBuffer(data)) { |
| | | $(connection).triggerHandler(events.onReceived, [data]); |
| | | } |
| | | }, |
| | | |
| | | processMessages: function (connection, minData, onInitialized) { |
| | | var data; |
| | | |
| | | // Update the last message time stamp |
| | | transportLogic.markLastMessage(connection); |
| | | |
| | | if (minData) { |
| | | data = transportLogic.maximizePersistentResponse(minData); |
| | | |
| | | transportLogic.updateGroups(connection, data.GroupsToken); |
| | | |
| | | if (data.MessageId) { |
| | | connection.messageId = data.MessageId; |
| | | } |
| | | |
| | | if (data.Messages) { |
| | | $.each(data.Messages, function (index, message) { |
| | | transportLogic.triggerReceived(connection, message); |
| | | }); |
| | | |
| | | transportLogic.tryInitialize(connection, data, onInitialized); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | monitorKeepAlive: function (connection) { |
| | | var keepAliveData = connection._.keepAliveData; |
| | | |
| | | // If we haven't initiated the keep alive timeouts then we need to |
| | | if (!keepAliveData.monitoring) { |
| | | keepAliveData.monitoring = true; |
| | | |
| | | transportLogic.markLastMessage(connection); |
| | | |
| | | // Save the function so we can unbind it on stop |
| | | connection._.keepAliveData.reconnectKeepAliveUpdate = function () { |
| | | // Mark a new message so that keep alive doesn't time out connections |
| | | transportLogic.markLastMessage(connection); |
| | | }; |
| | | |
| | | // Update Keep alive on reconnect |
| | | $(connection).bind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate); |
| | | |
| | | connection.log("Now monitoring keep alive with a warning timeout of " + keepAliveData.timeoutWarning + ", keep alive timeout of " + keepAliveData.timeout + " and disconnecting timeout of " + connection.disconnectTimeout); |
| | | } else { |
| | | connection.log("Tried to monitor keep alive but it's already being monitored."); |
| | | } |
| | | }, |
| | | |
| | | stopMonitoringKeepAlive: function (connection) { |
| | | var keepAliveData = connection._.keepAliveData; |
| | | |
| | | // Only attempt to stop the keep alive monitoring if its being monitored |
| | | if (keepAliveData.monitoring) { |
| | | // Stop monitoring |
| | | keepAliveData.monitoring = false; |
| | | |
| | | // Remove the updateKeepAlive function from the reconnect event |
| | | $(connection).unbind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate); |
| | | |
| | | // Clear all the keep alive data |
| | | connection._.keepAliveData = {}; |
| | | connection.log("Stopping the monitoring of the keep alive."); |
| | | } |
| | | }, |
| | | |
| | | startHeartbeat: function (connection) { |
| | | connection._.lastActiveAt = new Date().getTime(); |
| | | beat(connection); |
| | | }, |
| | | |
| | | markLastMessage: function (connection) { |
| | | connection._.lastMessageAt = new Date().getTime(); |
| | | }, |
| | | |
| | | markActive: function (connection) { |
| | | if (transportLogic.verifyLastActive(connection)) { |
| | | connection._.lastActiveAt = new Date().getTime(); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | |
| | | isConnectedOrReconnecting: function (connection) { |
| | | return connection.state === signalR.connectionState.connected || |
| | | connection.state === signalR.connectionState.reconnecting; |
| | | }, |
| | | |
| | | ensureReconnectingState: function (connection) { |
| | | if (changeState(connection, |
| | | signalR.connectionState.connected, |
| | | signalR.connectionState.reconnecting) === true) { |
| | | $(connection).triggerHandler(events.onReconnecting); |
| | | } |
| | | return connection.state === signalR.connectionState.reconnecting; |
| | | }, |
| | | |
| | | clearReconnectTimeout: function (connection) { |
| | | if (connection && connection._.reconnectTimeout) { |
| | | window.clearTimeout(connection._.reconnectTimeout); |
| | | delete connection._.reconnectTimeout; |
| | | } |
| | | }, |
| | | |
| | | verifyLastActive: function (connection) { |
| | | if (new Date().getTime() - connection._.lastActiveAt >= connection.reconnectWindow) { |
| | | var message = signalR._.format(signalR.resources.reconnectWindowTimeout, new Date(connection._.lastActiveAt), connection.reconnectWindow); |
| | | connection.log(message); |
| | | $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ "TimeoutException")]); |
| | | connection.stop(/* async */ false, /* notifyServer */ false); |
| | | return false; |
| | | } |
| | | |
| | | return true; |
| | | }, |
| | | |
| | | reconnect: function (connection, transportName) { |
| | | var transport = signalR.transports[transportName]; |
| | | |
| | | // We should only set a reconnectTimeout if we are currently connected |
| | | // and a reconnectTimeout isn't already set. |
| | | if (transportLogic.isConnectedOrReconnecting(connection) && !connection._.reconnectTimeout) { |
| | | // Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration. |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | connection._.reconnectTimeout = window.setTimeout(function () { |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | transport.stop(connection); |
| | | |
| | | if (transportLogic.ensureReconnectingState(connection)) { |
| | | connection.log(transportName + " reconnecting."); |
| | | transport.start(connection); |
| | | } |
| | | }, connection.reconnectDelay); |
| | | } |
| | | }, |
| | | |
| | | handleParseFailure: function (connection, result, error, onFailed, context) { |
| | | var wrappedError = signalR._.transportError( |
| | | signalR._.format(signalR.resources.parseFailed, result), |
| | | connection.transport, |
| | | error, |
| | | context); |
| | | |
| | | // If we're in the initialization phase trigger onFailed, otherwise stop the connection. |
| | | if (onFailed && onFailed(wrappedError)) { |
| | | connection.log("Failed to parse server response while attempting to connect."); |
| | | } else { |
| | | $(connection).triggerHandler(events.onError, [wrappedError]); |
| | | connection.stop(); |
| | | } |
| | | }, |
| | | |
| | | initHandler: function (connection) { |
| | | return new InitHandler(connection); |
| | | }, |
| | | |
| | | foreverFrame: { |
| | | count: 0, |
| | | connections: {} |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.webSockets.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic; |
| | | |
| | | signalR.transports.webSockets = { |
| | | name: "webSockets", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | var payload = transportLogic.stringifySend(connection, data); |
| | | |
| | | try { |
| | | connection.socket.send(payload); |
| | | } catch (ex) { |
| | | $(connection).triggerHandler(events.onError, |
| | | [signalR._.transportError( |
| | | signalR.resources.webSocketsInvalidState, |
| | | connection.transport, |
| | | ex, |
| | | connection.socket |
| | | ), |
| | | data]); |
| | | } |
| | | }, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var url, |
| | | opened = false, |
| | | that = this, |
| | | reconnecting = !onSuccess, |
| | | $connection = $(connection); |
| | | |
| | | if (!window.WebSocket) { |
| | | onFailed(); |
| | | return; |
| | | } |
| | | |
| | | if (!connection.socket) { |
| | | if (connection.webSocketServerUrl) { |
| | | url = connection.webSocketServerUrl; |
| | | } else { |
| | | url = connection.wsProtocol + connection.host; |
| | | } |
| | | |
| | | url += transportLogic.getUrl(connection, this.name, reconnecting); |
| | | |
| | | connection.log("Connecting to websocket endpoint '" + url + "'."); |
| | | connection.socket = new window.WebSocket(url); |
| | | |
| | | connection.socket.onopen = function () { |
| | | opened = true; |
| | | connection.log("Websocket opened."); |
| | | |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | $connection.triggerHandler(events.onReconnect); |
| | | } |
| | | }; |
| | | |
| | | connection.socket.onclose = function (event) { |
| | | var error; |
| | | |
| | | // Only handle a socket close if the close is from the current socket. |
| | | // Sometimes on disconnect the server will push down an onclose event |
| | | // to an expired socket. |
| | | |
| | | if (this === connection.socket) { |
| | | if (opened && typeof event.wasClean !== "undefined" && event.wasClean === false) { |
| | | // Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but |
| | | // I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers. |
| | | error = signalR._.transportError( |
| | | signalR.resources.webSocketClosed, |
| | | connection.transport, |
| | | event); |
| | | |
| | | connection.log("Unclean disconnect from websocket: " + (event.reason || "[no reason given].")); |
| | | } else { |
| | | connection.log("Websocket closed."); |
| | | } |
| | | |
| | | if (!onFailed || !onFailed(error)) { |
| | | if (error) { |
| | | $(connection).triggerHandler(events.onError, [error]); |
| | | } |
| | | |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | connection.socket.onmessage = function (event) { |
| | | var data; |
| | | |
| | | try { |
| | | data = connection._parseResponse(event.data); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(connection, event.data, error, onFailed, event); |
| | | return; |
| | | } |
| | | |
| | | if (data) { |
| | | // data.M is PersistentResponse.Messages |
| | | if ($.isEmptyObject(data) || data.M) { |
| | | transportLogic.processMessages(connection, data, onSuccess); |
| | | } else { |
| | | // For websockets we need to trigger onReceived |
| | | // for callbacks to outgoing hub calls. |
| | | transportLogic.triggerReceived(connection, data); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | transportLogic.reconnect(connection, this.name); |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | // Don't trigger a reconnect after stopping |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (connection.socket) { |
| | | connection.log("Closing the Websocket."); |
| | | connection.socket.close(); |
| | | connection.socket = null; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.serverSentEvents.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic, |
| | | clearReconnectAttemptTimeout = function (connection) { |
| | | window.clearTimeout(connection._.reconnectAttemptTimeoutHandle); |
| | | delete connection._.reconnectAttemptTimeoutHandle; |
| | | }; |
| | | |
| | | signalR.transports.serverSentEvents = { |
| | | name: "serverSentEvents", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | timeOut: 3000, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var that = this, |
| | | opened = false, |
| | | $connection = $(connection), |
| | | reconnecting = !onSuccess, |
| | | url; |
| | | |
| | | if (connection.eventSource) { |
| | | connection.log("The connection already has an event source. Stopping it."); |
| | | connection.stop(); |
| | | } |
| | | |
| | | if (!window.EventSource) { |
| | | if (onFailed) { |
| | | connection.log("This browser doesn't support SSE."); |
| | | onFailed(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | url = transportLogic.getUrl(connection, this.name, reconnecting); |
| | | |
| | | try { |
| | | connection.log("Attempting to connect to SSE endpoint '" + url + "'."); |
| | | connection.eventSource = new window.EventSource(url, { withCredentials: connection.withCredentials }); |
| | | } |
| | | catch (e) { |
| | | connection.log("EventSource failed trying to connect with error " + e.Message + "."); |
| | | if (onFailed) { |
| | | // The connection failed, call the failed callback |
| | | onFailed(); |
| | | } else { |
| | | $connection.triggerHandler(events.onError, [signalR._.transportError(signalR.resources.eventSourceFailedToConnect, connection.transport, e)]); |
| | | if (reconnecting) { |
| | | // If we were reconnecting, rather than doing initial connect, then try reconnect again |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | |
| | | if (reconnecting) { |
| | | connection._.reconnectAttemptTimeoutHandle = window.setTimeout(function () { |
| | | if (opened === false) { |
| | | // If we're reconnecting and the event source is attempting to connect, |
| | | // don't keep retrying. This causes duplicate connections to spawn. |
| | | if (connection.eventSource.readyState !== window.EventSource.OPEN) { |
| | | // If we were reconnecting, rather than doing initial connect, then try reconnect again |
| | | that.reconnect(connection); |
| | | } |
| | | } |
| | | }, |
| | | that.timeOut); |
| | | } |
| | | |
| | | connection.eventSource.addEventListener("open", function (e) { |
| | | connection.log("EventSource connected."); |
| | | |
| | | clearReconnectAttemptTimeout(connection); |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (opened === false) { |
| | | opened = true; |
| | | |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | $connection.triggerHandler(events.onReconnect); |
| | | } |
| | | } |
| | | }, false); |
| | | |
| | | connection.eventSource.addEventListener("message", function (e) { |
| | | var res; |
| | | |
| | | // process messages |
| | | if (e.data === "initialized") { |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | res = connection._parseResponse(e.data); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(connection, e.data, error, onFailed, e); |
| | | return; |
| | | } |
| | | |
| | | transportLogic.processMessages(connection, res, onSuccess); |
| | | }, false); |
| | | |
| | | connection.eventSource.addEventListener("error", function (e) { |
| | | var error = signalR._.transportError( |
| | | signalR.resources.eventSourceError, |
| | | connection.transport, |
| | | e); |
| | | |
| | | // Only handle an error if the error is from the current Event Source. |
| | | // Sometimes on disconnect the server will push down an error event |
| | | // to an expired Event Source. |
| | | if (this !== connection.eventSource) { |
| | | return; |
| | | } |
| | | |
| | | if (onFailed && onFailed(error)) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("EventSource readyState: " + connection.eventSource.readyState + "."); |
| | | |
| | | if (e.eventPhase === window.EventSource.CLOSED) { |
| | | // We don't use the EventSource's native reconnect function as it |
| | | // doesn't allow us to change the URL when reconnecting. We need |
| | | // to change the URL to not include the /connect suffix, and pass |
| | | // the last message id we received. |
| | | connection.log("EventSource reconnecting due to the server connection ending."); |
| | | that.reconnect(connection); |
| | | } else { |
| | | // connection error |
| | | connection.log("EventSource error."); |
| | | $connection.triggerHandler(events.onError, [error]); |
| | | } |
| | | }, false); |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | transportLogic.reconnect(connection, this.name); |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | // Don't trigger a reconnect after stopping |
| | | clearReconnectAttemptTimeout(connection); |
| | | transportLogic.clearReconnectTimeout(connection); |
| | | |
| | | if (connection && connection.eventSource) { |
| | | connection.log("EventSource calling close()."); |
| | | connection.eventSource.close(); |
| | | connection.eventSource = null; |
| | | delete connection.eventSource; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.foreverFrame.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | transportLogic = signalR.transports._logic, |
| | | createFrame = function () { |
| | | var frame = window.document.createElement("iframe"); |
| | | frame.setAttribute("style", "position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;"); |
| | | return frame; |
| | | }, |
| | | // Used to prevent infinite loading icon spins in older versions of ie |
| | | // We build this object inside a closure so we don't pollute the rest of |
| | | // the foreverFrame transport with unnecessary functions/utilities. |
| | | loadPreventer = (function () { |
| | | var loadingFixIntervalId = null, |
| | | loadingFixInterval = 1000, |
| | | attachedTo = 0; |
| | | |
| | | return { |
| | | prevent: function () { |
| | | // Prevent additional iframe removal procedures from newer browsers |
| | | if (signalR._.ieVersion <= 8) { |
| | | // We only ever want to set the interval one time, so on the first attachedTo |
| | | if (attachedTo === 0) { |
| | | // Create and destroy iframe every 3 seconds to prevent loading icon, super hacky |
| | | loadingFixIntervalId = window.setInterval(function () { |
| | | var tempFrame = createFrame(); |
| | | |
| | | window.document.body.appendChild(tempFrame); |
| | | window.document.body.removeChild(tempFrame); |
| | | |
| | | tempFrame = null; |
| | | }, loadingFixInterval); |
| | | } |
| | | |
| | | attachedTo++; |
| | | } |
| | | }, |
| | | cancel: function () { |
| | | // Only clear the interval if there's only one more object that the loadPreventer is attachedTo |
| | | if (attachedTo === 1) { |
| | | window.clearInterval(loadingFixIntervalId); |
| | | } |
| | | |
| | | if (attachedTo > 0) { |
| | | attachedTo--; |
| | | } |
| | | } |
| | | }; |
| | | })(); |
| | | |
| | | signalR.transports.foreverFrame = { |
| | | name: "foreverFrame", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return true; |
| | | }, |
| | | |
| | | // Added as a value here so we can create tests to verify functionality |
| | | iframeClearThreshold: 50, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | var that = this, |
| | | frameId = (transportLogic.foreverFrame.count += 1), |
| | | url, |
| | | frame = createFrame(), |
| | | frameLoadHandler = function () { |
| | | connection.log("Forever frame iframe finished loading and is no longer receiving messages."); |
| | | if (!onFailed || !onFailed()) { |
| | | that.reconnect(connection); |
| | | } |
| | | }; |
| | | |
| | | if (window.EventSource) { |
| | | // If the browser supports SSE, don't use Forever Frame |
| | | if (onFailed) { |
| | | connection.log("Forever Frame is not supported by SignalR on browsers with SSE support."); |
| | | onFailed(); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | frame.setAttribute("data-signalr-connection-id", connection.id); |
| | | |
| | | // Start preventing loading icon |
| | | // This will only perform work if the loadPreventer is not attached to another connection. |
| | | loadPreventer.prevent(); |
| | | |
| | | // Build the url |
| | | url = transportLogic.getUrl(connection, this.name); |
| | | url += "&frameId=" + frameId; |
| | | |
| | | // add frame to the document prior to setting URL to avoid caching issues. |
| | | window.document.documentElement.appendChild(frame); |
| | | |
| | | connection.log("Binding to iframe's load event."); |
| | | |
| | | if (frame.addEventListener) { |
| | | frame.addEventListener("load", frameLoadHandler, false); |
| | | } else if (frame.attachEvent) { |
| | | frame.attachEvent("onload", frameLoadHandler); |
| | | } |
| | | |
| | | frame.src = url; |
| | | transportLogic.foreverFrame.connections[frameId] = connection; |
| | | |
| | | connection.frame = frame; |
| | | connection.frameId = frameId; |
| | | |
| | | if (onSuccess) { |
| | | connection.onSuccess = function () { |
| | | connection.log("Iframe transport started."); |
| | | onSuccess(); |
| | | }; |
| | | } |
| | | }, |
| | | |
| | | reconnect: function (connection) { |
| | | var that = this; |
| | | |
| | | // Need to verify connection state and verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration. |
| | | if (transportLogic.isConnectedOrReconnecting(connection) && transportLogic.verifyLastActive(connection)) { |
| | | window.setTimeout(function () { |
| | | // Verify that we're ok to reconnect. |
| | | if (!transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | if (connection.frame && transportLogic.ensureReconnectingState(connection)) { |
| | | var frame = connection.frame, |
| | | src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId; |
| | | connection.log("Updating iframe src to '" + src + "'."); |
| | | frame.src = src; |
| | | } |
| | | }, connection.reconnectDelay); |
| | | } |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | this.reconnect(connection); |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | receive: function (connection, data) { |
| | | var cw, |
| | | body, |
| | | response; |
| | | |
| | | if (connection.json !== connection._originalJson) { |
| | | // If there's a custom JSON parser configured then serialize the object |
| | | // using the original (browser) JSON parser and then deserialize it using |
| | | // the custom parser (connection._parseResponse does that). This is so we |
| | | // can easily send the response from the server as "raw" JSON but still |
| | | // support custom JSON deserialization in the browser. |
| | | data = connection._originalJson.stringify(data); |
| | | } |
| | | |
| | | response = connection._parseResponse(data); |
| | | |
| | | transportLogic.processMessages(connection, response, connection.onSuccess); |
| | | |
| | | // Protect against connection stopping from a callback trigger within the processMessages above. |
| | | if (connection.state === $.signalR.connectionState.connected) { |
| | | // Delete the script & div elements |
| | | connection.frameMessageCount = (connection.frameMessageCount || 0) + 1; |
| | | if (connection.frameMessageCount > signalR.transports.foreverFrame.iframeClearThreshold) { |
| | | connection.frameMessageCount = 0; |
| | | cw = connection.frame.contentWindow || connection.frame.contentDocument; |
| | | if (cw && cw.document && cw.document.body) { |
| | | body = cw.document.body; |
| | | |
| | | // Remove all the child elements from the iframe's body to conserver memory |
| | | while (body.firstChild) { |
| | | body.removeChild(body.firstChild); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | var cw = null; |
| | | |
| | | // Stop attempting to prevent loading icon |
| | | loadPreventer.cancel(); |
| | | |
| | | if (connection.frame) { |
| | | if (connection.frame.stop) { |
| | | connection.frame.stop(); |
| | | } else { |
| | | try { |
| | | cw = connection.frame.contentWindow || connection.frame.contentDocument; |
| | | if (cw.document && cw.document.execCommand) { |
| | | cw.document.execCommand("Stop"); |
| | | } |
| | | } |
| | | catch (e) { |
| | | connection.log("Error occurred when stopping foreverFrame transport. Message = " + e.message + "."); |
| | | } |
| | | } |
| | | |
| | | // Ensure the iframe is where we left it |
| | | if (connection.frame.parentNode === window.document.documentElement) { |
| | | window.document.documentElement.removeChild(connection.frame); |
| | | } |
| | | |
| | | delete transportLogic.foreverFrame.connections[connection.frameId]; |
| | | connection.frame = null; |
| | | connection.frameId = null; |
| | | delete connection.frame; |
| | | delete connection.frameId; |
| | | delete connection.onSuccess; |
| | | delete connection.frameMessageCount; |
| | | connection.log("Stopping forever frame."); |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | }, |
| | | |
| | | getConnection: function (id) { |
| | | return transportLogic.foreverFrame.connections[id]; |
| | | }, |
| | | |
| | | started: function (connection) { |
| | | if (changeState(connection, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | |
| | | $(connection).triggerHandler(events.onReconnect); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.transports.longPolling.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.transports.common.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var signalR = $.signalR, |
| | | events = $.signalR.events, |
| | | changeState = $.signalR.changeState, |
| | | isDisconnecting = $.signalR.isDisconnecting, |
| | | transportLogic = signalR.transports._logic; |
| | | |
| | | signalR.transports.longPolling = { |
| | | name: "longPolling", |
| | | |
| | | supportsKeepAlive: function () { |
| | | return false; |
| | | }, |
| | | |
| | | reconnectDelay: 3000, |
| | | |
| | | start: function (connection, onSuccess, onFailed) { |
| | | /// <summary>Starts the long polling connection</summary> |
| | | /// <param name="connection" type="signalR">The SignalR connection to start</param> |
| | | var that = this, |
| | | fireConnect = function () { |
| | | fireConnect = $.noop; |
| | | |
| | | connection.log("LongPolling connected."); |
| | | |
| | | if (onSuccess) { |
| | | onSuccess(); |
| | | } else { |
| | | connection.log("WARNING! The client received an init message after reconnecting."); |
| | | } |
| | | }, |
| | | tryFailConnect = function (error) { |
| | | if (onFailed(error)) { |
| | | connection.log("LongPolling failed to connect."); |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | }, |
| | | privateData = connection._, |
| | | reconnectErrors = 0, |
| | | fireReconnected = function (instance) { |
| | | window.clearTimeout(privateData.reconnectTimeoutId); |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | if (changeState(instance, |
| | | signalR.connectionState.reconnecting, |
| | | signalR.connectionState.connected) === true) { |
| | | // Successfully reconnected! |
| | | instance.log("Raising the reconnect event"); |
| | | $(instance).triggerHandler(events.onReconnect); |
| | | } |
| | | }, |
| | | // 1 hour |
| | | maxFireReconnectedTimeout = 3600000; |
| | | |
| | | if (connection.pollXhr) { |
| | | connection.log("Polling xhr requests already exists, aborting."); |
| | | connection.stop(); |
| | | } |
| | | |
| | | connection.messageId = null; |
| | | |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | (function poll(instance, raiseReconnect) { |
| | | var messageId = instance.messageId, |
| | | connect = (messageId === null), |
| | | reconnecting = !connect, |
| | | polling = !raiseReconnect, |
| | | url = transportLogic.getUrl(instance, that.name, reconnecting, polling, true /* use Post for longPolling */), |
| | | postData = {}; |
| | | |
| | | if (instance.messageId) { |
| | | postData.messageId = instance.messageId; |
| | | } |
| | | |
| | | if (instance.groupsToken) { |
| | | postData.groupsToken = instance.groupsToken; |
| | | } |
| | | |
| | | // If we've disconnected during the time we've tried to re-instantiate the poll then stop. |
| | | if (isDisconnecting(instance) === true) { |
| | | return; |
| | | } |
| | | |
| | | connection.log("Opening long polling request to '" + url + "'."); |
| | | instance.pollXhr = transportLogic.ajax(connection, { |
| | | xhrFields: { |
| | | onprogress: function () { |
| | | transportLogic.markLastMessage(connection); |
| | | } |
| | | }, |
| | | url: url, |
| | | type: "POST", |
| | | contentType: signalR._.defaultContentType, |
| | | data: postData, |
| | | timeout: connection._.pollTimeout, |
| | | success: function (result) { |
| | | var minData, |
| | | delay = 0, |
| | | data, |
| | | shouldReconnect; |
| | | |
| | | connection.log("Long poll complete."); |
| | | |
| | | // Reset our reconnect errors so if we transition into a reconnecting state again we trigger |
| | | // reconnected quickly |
| | | reconnectErrors = 0; |
| | | |
| | | try { |
| | | // Remove any keep-alives from the beginning of the result |
| | | minData = connection._parseResponse(result); |
| | | } |
| | | catch (error) { |
| | | transportLogic.handleParseFailure(instance, result, error, tryFailConnect, instance.pollXhr); |
| | | return; |
| | | } |
| | | |
| | | // If there's currently a timeout to trigger reconnect, fire it now before processing messages |
| | | if (privateData.reconnectTimeoutId !== null) { |
| | | fireReconnected(instance); |
| | | } |
| | | |
| | | if (minData) { |
| | | data = transportLogic.maximizePersistentResponse(minData); |
| | | } |
| | | |
| | | transportLogic.processMessages(instance, minData, fireConnect); |
| | | |
| | | if (data && |
| | | $.type(data.LongPollDelay) === "number") { |
| | | delay = data.LongPollDelay; |
| | | } |
| | | |
| | | if (isDisconnecting(instance) === true) { |
| | | return; |
| | | } |
| | | |
| | | shouldReconnect = data && data.ShouldReconnect; |
| | | if (shouldReconnect) { |
| | | // Transition into the reconnecting state |
| | | // If this fails then that means that the user transitioned the connection into a invalid state in processMessages. |
| | | if (!transportLogic.ensureReconnectingState(instance)) { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // We never want to pass a raiseReconnect flag after a successful poll. This is handled via the error function |
| | | if (delay > 0) { |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | poll(instance, shouldReconnect); |
| | | }, delay); |
| | | } else { |
| | | poll(instance, shouldReconnect); |
| | | } |
| | | }, |
| | | |
| | | error: function (data, textStatus) { |
| | | var error = signalR._.transportError(signalR.resources.longPollFailed, connection.transport, data, instance.pollXhr); |
| | | |
| | | // Stop trying to trigger reconnect, connection is in an error state |
| | | // If we're not in the reconnect state this will noop |
| | | window.clearTimeout(privateData.reconnectTimeoutId); |
| | | privateData.reconnectTimeoutId = null; |
| | | |
| | | if (textStatus === "abort") { |
| | | connection.log("Aborted xhr request."); |
| | | return; |
| | | } |
| | | |
| | | if (!tryFailConnect(error)) { |
| | | |
| | | // Increment our reconnect errors, we assume all errors to be reconnect errors |
| | | // In the case that it's our first error this will cause Reconnect to be fired |
| | | // after 1 second due to reconnectErrors being = 1. |
| | | reconnectErrors++; |
| | | |
| | | if (connection.state !== signalR.connectionState.reconnecting) { |
| | | connection.log("An error occurred using longPolling. Status = " + textStatus + ". Response = " + data.responseText + "."); |
| | | $(instance).triggerHandler(events.onError, [error]); |
| | | } |
| | | |
| | | // We check the state here to verify that we're not in an invalid state prior to verifying Reconnect. |
| | | // If we're not in connected or reconnecting then the next ensureReconnectingState check will fail and will return. |
| | | // Therefore we don't want to change that failure code path. |
| | | if ((connection.state === signalR.connectionState.connected || |
| | | connection.state === signalR.connectionState.reconnecting) && |
| | | !transportLogic.verifyLastActive(connection)) { |
| | | return; |
| | | } |
| | | |
| | | // Transition into the reconnecting state |
| | | // If this fails then that means that the user transitioned the connection into the disconnected or connecting state within the above error handler trigger. |
| | | if (!transportLogic.ensureReconnectingState(instance)) { |
| | | return; |
| | | } |
| | | |
| | | // Call poll with the raiseReconnect flag as true after the reconnect delay |
| | | privateData.pollTimeoutId = window.setTimeout(function () { |
| | | poll(instance, true); |
| | | }, that.reconnectDelay); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // This will only ever pass after an error has occurred via the poll ajax procedure. |
| | | if (reconnecting && raiseReconnect === true) { |
| | | // We wait to reconnect depending on how many times we've failed to reconnect. |
| | | // This is essentially a heuristic that will exponentially increase in wait time before |
| | | // triggering reconnected. This depends on the "error" handler of Poll to cancel this |
| | | // timeout if it triggers before the Reconnected event fires. |
| | | // The Math.min at the end is to ensure that the reconnect timeout does not overflow. |
| | | privateData.reconnectTimeoutId = window.setTimeout(function () { fireReconnected(instance); }, Math.min(1000 * (Math.pow(2, reconnectErrors) - 1), maxFireReconnectedTimeout)); |
| | | } |
| | | }(connection)); |
| | | }, 250); // Have to delay initial poll so Chrome doesn't show loader spinner in tab |
| | | }, |
| | | |
| | | lostConnection: function (connection) { |
| | | if (connection.pollXhr) { |
| | | connection.pollXhr.abort("lostConnection"); |
| | | } |
| | | }, |
| | | |
| | | send: function (connection, data) { |
| | | transportLogic.ajaxSend(connection, data); |
| | | }, |
| | | |
| | | stop: function (connection) { |
| | | /// <summary>Stops the long polling connection</summary> |
| | | /// <param name="connection" type="signalR">The SignalR connection to stop</param> |
| | | |
| | | window.clearTimeout(connection._.pollTimeoutId); |
| | | window.clearTimeout(connection._.reconnectTimeoutId); |
| | | |
| | | delete connection._.pollTimeoutId; |
| | | delete connection._.reconnectTimeoutId; |
| | | |
| | | if (connection.pollXhr) { |
| | | connection.pollXhr.abort(); |
| | | connection.pollXhr = null; |
| | | delete connection.pollXhr; |
| | | } |
| | | }, |
| | | |
| | | abort: function (connection, async) { |
| | | transportLogic.ajaxAbort(connection, async); |
| | | } |
| | | }; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.hubs.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | |
| | | (function ($, window, undefined) { |
| | | |
| | | var eventNamespace = ".hubProxy", |
| | | signalR = $.signalR; |
| | | |
| | | function makeEventName(event) { |
| | | return event + eventNamespace; |
| | | } |
| | | |
| | | // Equivalent to Array.prototype.map |
| | | function map(arr, fun, thisp) { |
| | | var i, |
| | | length = arr.length, |
| | | result = []; |
| | | for (i = 0; i < length; i += 1) { |
| | | if (arr.hasOwnProperty(i)) { |
| | | result[i] = fun.call(thisp, arr[i], i, arr); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | function getArgValue(a) { |
| | | return $.isFunction(a) ? null : ($.type(a) === "undefined" ? null : a); |
| | | } |
| | | |
| | | function hasMembers(obj) { |
| | | for (var key in obj) { |
| | | // If we have any properties in our callback map then we have callbacks and can exit the loop via return |
| | | if (obj.hasOwnProperty(key)) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | function clearInvocationCallbacks(connection, error) { |
| | | /// <param name="connection" type="hubConnection" /> |
| | | var callbacks = connection._.invocationCallbacks, |
| | | callback; |
| | | |
| | | if (hasMembers(callbacks)) { |
| | | connection.log("Clearing hub invocation callbacks with error: " + error + "."); |
| | | } |
| | | |
| | | // Reset the callback cache now as we have a local var referencing it |
| | | connection._.invocationCallbackId = 0; |
| | | delete connection._.invocationCallbacks; |
| | | connection._.invocationCallbacks = {}; |
| | | |
| | | // Loop over the callbacks and invoke them. |
| | | // We do this using a local var reference and *after* we've cleared the cache |
| | | // so that if a fail callback itself tries to invoke another method we don't |
| | | // end up with its callback in the list we're looping over. |
| | | for (var callbackId in callbacks) { |
| | | callback = callbacks[callbackId]; |
| | | callback.method.call(callback.scope, { E: error }); |
| | | } |
| | | } |
| | | |
| | | // hubProxy |
| | | function hubProxy(hubConnection, hubName) { |
| | | /// <summary> |
| | | /// Creates a new proxy object for the given hub connection that can be used to invoke |
| | | /// methods on server hubs and handle client method invocation requests from the server. |
| | | /// </summary> |
| | | return new hubProxy.fn.init(hubConnection, hubName); |
| | | } |
| | | |
| | | hubProxy.fn = hubProxy.prototype = { |
| | | init: function (connection, hubName) { |
| | | this.state = {}; |
| | | this.connection = connection; |
| | | this.hubName = hubName; |
| | | this._ = { |
| | | callbackMap: {} |
| | | }; |
| | | }, |
| | | |
| | | constructor: hubProxy, |
| | | |
| | | hasSubscriptions: function () { |
| | | return hasMembers(this._.callbackMap); |
| | | }, |
| | | |
| | | on: function (eventName, callback) { |
| | | /// <summary>Wires up a callback to be invoked when a invocation request is received from the server hub.</summary> |
| | | /// <param name="eventName" type="String">The name of the hub event to register the callback for.</param> |
| | | /// <param name="callback" type="Function">The callback to be invoked.</param> |
| | | var that = this, |
| | | callbackMap = that._.callbackMap; |
| | | |
| | | // Normalize the event name to lowercase |
| | | eventName = eventName.toLowerCase(); |
| | | |
| | | // If there is not an event registered for this callback yet we want to create its event space in the callback map. |
| | | if (!callbackMap[eventName]) { |
| | | callbackMap[eventName] = {}; |
| | | } |
| | | |
| | | // Map the callback to our encompassed function |
| | | callbackMap[eventName][callback] = function (e, data) { |
| | | callback.apply(that, data); |
| | | }; |
| | | |
| | | $(that).bind(makeEventName(eventName), callbackMap[eventName][callback]); |
| | | |
| | | return that; |
| | | }, |
| | | |
| | | off: function (eventName, callback) { |
| | | /// <summary>Removes the callback invocation request from the server hub for the given event name.</summary> |
| | | /// <param name="eventName" type="String">The name of the hub event to unregister the callback for.</param> |
| | | /// <param name="callback" type="Function">The callback to be invoked.</param> |
| | | var that = this, |
| | | callbackMap = that._.callbackMap, |
| | | callbackSpace; |
| | | |
| | | // Normalize the event name to lowercase |
| | | eventName = eventName.toLowerCase(); |
| | | |
| | | callbackSpace = callbackMap[eventName]; |
| | | |
| | | // Verify that there is an event space to unbind |
| | | if (callbackSpace) { |
| | | // Only unbind if there's an event bound with eventName and a callback with the specified callback |
| | | if (callbackSpace[callback]) { |
| | | $(that).unbind(makeEventName(eventName), callbackSpace[callback]); |
| | | |
| | | // Remove the callback from the callback map |
| | | delete callbackSpace[callback]; |
| | | |
| | | // Check if there are any members left on the event, if not we need to destroy it. |
| | | if (!hasMembers(callbackSpace)) { |
| | | delete callbackMap[eventName]; |
| | | } |
| | | } else if (!callback) { // Check if we're removing the whole event and we didn't error because of an invalid callback |
| | | $(that).unbind(makeEventName(eventName)); |
| | | |
| | | delete callbackMap[eventName]; |
| | | } |
| | | } |
| | | |
| | | return that; |
| | | }, |
| | | |
| | | invoke: function (methodName) { |
| | | /// <summary>Invokes a server hub method with the given arguments.</summary> |
| | | /// <param name="methodName" type="String">The name of the server hub method.</param> |
| | | |
| | | var that = this, |
| | | connection = that.connection, |
| | | args = $.makeArray(arguments).slice(1), |
| | | argValues = map(args, getArgValue), |
| | | data = { H: that.hubName, M: methodName, A: argValues, I: connection._.invocationCallbackId }, |
| | | d = $.Deferred(), |
| | | callback = function (minResult) { |
| | | var result = that._maximizeHubResponse(minResult), |
| | | source, |
| | | error; |
| | | |
| | | // Update the hub state |
| | | $.extend(that.state, result.State); |
| | | |
| | | if (result.Progress) { |
| | | if (d.notifyWith) { |
| | | // Progress is only supported in jQuery 1.7+ |
| | | d.notifyWith(that, [result.Progress.Data]); |
| | | } else if(!connection._.progressjQueryVersionLogged) { |
| | | connection.log("A hub method invocation progress update was received but the version of jQuery in use (" + $.prototype.jquery + ") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications."); |
| | | connection._.progressjQueryVersionLogged = true; |
| | | } |
| | | } else if (result.Error) { |
| | | // Server hub method threw an exception, log it & reject the deferred |
| | | if (result.StackTrace) { |
| | | connection.log(result.Error + "\n" + result.StackTrace + "."); |
| | | } |
| | | |
| | | // result.ErrorData is only set if a HubException was thrown |
| | | source = result.IsHubException ? "HubException" : "Exception"; |
| | | error = signalR._.error(result.Error, source); |
| | | error.data = result.ErrorData; |
| | | |
| | | connection.log(that.hubName + "." + methodName + " failed to execute. Error: " + error.message); |
| | | d.rejectWith(that, [error]); |
| | | } else { |
| | | // Server invocation succeeded, resolve the deferred |
| | | connection.log("Invoked " + that.hubName + "." + methodName); |
| | | d.resolveWith(that, [result.Result]); |
| | | } |
| | | }; |
| | | |
| | | connection._.invocationCallbacks[connection._.invocationCallbackId.toString()] = { scope: that, method: callback }; |
| | | connection._.invocationCallbackId += 1; |
| | | |
| | | if (!$.isEmptyObject(that.state)) { |
| | | data.S = that.state; |
| | | } |
| | | |
| | | connection.log("Invoking " + that.hubName + "." + methodName); |
| | | connection.send(data); |
| | | |
| | | return d.promise(); |
| | | }, |
| | | |
| | | _maximizeHubResponse: function (minHubResponse) { |
| | | return { |
| | | State: minHubResponse.S, |
| | | Result: minHubResponse.R, |
| | | Progress: minHubResponse.P ? { |
| | | Id: minHubResponse.P.I, |
| | | Data: minHubResponse.P.D |
| | | } : null, |
| | | Id: minHubResponse.I, |
| | | IsHubException: minHubResponse.H, |
| | | Error: minHubResponse.E, |
| | | StackTrace: minHubResponse.T, |
| | | ErrorData: minHubResponse.D |
| | | }; |
| | | } |
| | | }; |
| | | |
| | | hubProxy.fn.init.prototype = hubProxy.fn; |
| | | |
| | | // hubConnection |
| | | function hubConnection(url, options) { |
| | | /// <summary>Creates a new hub connection.</summary> |
| | | /// <param name="url" type="String">[Optional] The hub route url, defaults to "/signalr".</param> |
| | | /// <param name="options" type="Object">[Optional] Settings to use when creating the hubConnection.</param> |
| | | var settings = { |
| | | qs: null, |
| | | logging: false, |
| | | useDefaultPath: true |
| | | }; |
| | | |
| | | $.extend(settings, options); |
| | | |
| | | if (!url || settings.useDefaultPath) { |
| | | url = (url || "") + "/signalr"; |
| | | } |
| | | return new hubConnection.fn.init(url, settings); |
| | | } |
| | | |
| | | hubConnection.fn = hubConnection.prototype = $.connection(); |
| | | |
| | | hubConnection.fn.init = function (url, options) { |
| | | var settings = { |
| | | qs: null, |
| | | logging: false, |
| | | useDefaultPath: true |
| | | }, |
| | | connection = this; |
| | | |
| | | $.extend(settings, options); |
| | | |
| | | // Call the base constructor |
| | | $.signalR.fn.init.call(connection, url, settings.qs, settings.logging); |
| | | |
| | | // Object to store hub proxies for this connection |
| | | connection.proxies = {}; |
| | | |
| | | connection._.invocationCallbackId = 0; |
| | | connection._.invocationCallbacks = {}; |
| | | |
| | | // Wire up the received handler |
| | | connection.received(function (minData) { |
| | | var data, proxy, dataCallbackId, callback, hubName, eventName; |
| | | if (!minData) { |
| | | return; |
| | | } |
| | | |
| | | // We have to handle progress updates first in order to ensure old clients that receive |
| | | // progress updates enter the return value branch and then no-op when they can't find |
| | | // the callback in the map (because the minData.I value will not be a valid callback ID) |
| | | if (typeof (minData.P) !== "undefined") { |
| | | // Process progress notification |
| | | dataCallbackId = minData.P.I.toString(); |
| | | callback = connection._.invocationCallbacks[dataCallbackId]; |
| | | if (callback) { |
| | | callback.method.call(callback.scope, minData); |
| | | } |
| | | } else if (typeof (minData.I) !== "undefined") { |
| | | // We received the return value from a server method invocation, look up callback by id and call it |
| | | dataCallbackId = minData.I.toString(); |
| | | callback = connection._.invocationCallbacks[dataCallbackId]; |
| | | if (callback) { |
| | | // Delete the callback from the proxy |
| | | connection._.invocationCallbacks[dataCallbackId] = null; |
| | | delete connection._.invocationCallbacks[dataCallbackId]; |
| | | |
| | | // Invoke the callback |
| | | callback.method.call(callback.scope, minData); |
| | | } |
| | | } else { |
| | | data = this._maximizeClientHubInvocation(minData); |
| | | |
| | | // We received a client invocation request, i.e. broadcast from server hub |
| | | connection.log("Triggering client hub event '" + data.Method + "' on hub '" + data.Hub + "'."); |
| | | |
| | | // Normalize the names to lowercase |
| | | hubName = data.Hub.toLowerCase(); |
| | | eventName = data.Method.toLowerCase(); |
| | | |
| | | // Trigger the local invocation event |
| | | proxy = this.proxies[hubName]; |
| | | |
| | | // Update the hub state |
| | | $.extend(proxy.state, data.State); |
| | | $(proxy).triggerHandler(makeEventName(eventName), [data.Args]); |
| | | } |
| | | }); |
| | | |
| | | connection.error(function (errData, origData) { |
| | | var callbackId, callback; |
| | | |
| | | if (!origData) { |
| | | // No original data passed so this is not a send error |
| | | return; |
| | | } |
| | | |
| | | callbackId = origData.I; |
| | | callback = connection._.invocationCallbacks[callbackId]; |
| | | |
| | | // Verify that there is a callback bound (could have been cleared) |
| | | if (callback) { |
| | | // Delete the callback |
| | | connection._.invocationCallbacks[callbackId] = null; |
| | | delete connection._.invocationCallbacks[callbackId]; |
| | | |
| | | // Invoke the callback with an error to reject the promise |
| | | callback.method.call(callback.scope, { E: errData }); |
| | | } |
| | | }); |
| | | |
| | | connection.reconnecting(function () { |
| | | if (connection.transport && connection.transport.name === "webSockets") { |
| | | clearInvocationCallbacks(connection, "Connection started reconnecting before invocation result was received."); |
| | | } |
| | | }); |
| | | |
| | | connection.disconnected(function () { |
| | | clearInvocationCallbacks(connection, "Connection was disconnected before invocation result was received."); |
| | | }); |
| | | }; |
| | | |
| | | hubConnection.fn._maximizeClientHubInvocation = function (minClientHubInvocation) { |
| | | return { |
| | | Hub: minClientHubInvocation.H, |
| | | Method: minClientHubInvocation.M, |
| | | Args: minClientHubInvocation.A, |
| | | State: minClientHubInvocation.S |
| | | }; |
| | | }; |
| | | |
| | | hubConnection.fn._registerSubscribedHubs = function () { |
| | | /// <summary> |
| | | /// Sets the starting event to loop through the known hubs and register any new hubs |
| | | /// that have been added to the proxy. |
| | | /// </summary> |
| | | var connection = this; |
| | | |
| | | if (!connection._subscribedToHubs) { |
| | | connection._subscribedToHubs = true; |
| | | connection.starting(function () { |
| | | // Set the connection's data object with all the hub proxies with active subscriptions. |
| | | // These proxies will receive notifications from the server. |
| | | var subscribedHubs = []; |
| | | |
| | | $.each(connection.proxies, function (key) { |
| | | if (this.hasSubscriptions()) { |
| | | subscribedHubs.push({ name: key }); |
| | | connection.log("Client subscribed to hub '" + key + "'."); |
| | | } |
| | | }); |
| | | |
| | | if (subscribedHubs.length === 0) { |
| | | connection.log("No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to."); |
| | | } |
| | | |
| | | connection.data = connection.json.stringify(subscribedHubs); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | hubConnection.fn.createHubProxy = function (hubName) { |
| | | /// <summary> |
| | | /// Creates a new proxy object for the given hub connection that can be used to invoke |
| | | /// methods on server hubs and handle client method invocation requests from the server. |
| | | /// </summary> |
| | | /// <param name="hubName" type="String"> |
| | | /// The name of the hub on the server to create the proxy for. |
| | | /// </param> |
| | | |
| | | // Normalize the name to lowercase |
| | | hubName = hubName.toLowerCase(); |
| | | |
| | | var proxy = this.proxies[hubName]; |
| | | if (!proxy) { |
| | | proxy = hubProxy(this, hubName); |
| | | this.proxies[hubName] = proxy; |
| | | } |
| | | |
| | | this._registerSubscribedHubs(); |
| | | |
| | | return proxy; |
| | | }; |
| | | |
| | | hubConnection.fn.init.prototype = hubConnection.fn; |
| | | |
| | | $.hubConnection = hubConnection; |
| | | |
| | | }(window.jQuery, window)); |
| | | /* jquery.signalR.version.js */ |
| | | // Copyright (c) .NET Foundation. All rights reserved. |
| | | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
| | | |
| | | |
| | | /*global window:false */ |
| | | /// <reference path="jquery.signalR.core.js" /> |
| | | (function ($, undefined) { |
| | | $.signalR.version = "2.2.2"; |
| | | }(window.jQuery)); |
| packages/Microsoft.AspNet.SignalR.JS.2.2.2/content/Scripts/jquery.signalR-2.2.2.min.js
packages/Microsoft.AspNet.SignalR.SystemWeb.2.2.2/.signature.p7s
packages/Microsoft.AspNet.SignalR.SystemWeb.2.2.2/Microsoft.AspNet.SignalR.SystemWeb.2.2.2.nupkg
packages/Microsoft.AspNet.SignalR.SystemWeb.2.2.2/lib/net45/Microsoft.AspNet.SignalR.SystemWeb.XML
packages/Microsoft.AspNet.SignalR.SystemWeb.2.2.2/lib/net45/zh-Hans/Microsoft.AspNet.SignalR.SystemWeb.xml
packages/Microsoft.AspNet.SignalR.SystemWeb.zh-Hans.2.2.2/.signature.p7s
packages/Microsoft.AspNet.SignalR.SystemWeb.zh-Hans.2.2.2/Microsoft.AspNet.SignalR.SystemWeb.zh-Hans.2.2.2.nupkg
packages/Microsoft.AspNet.SignalR.SystemWeb.zh-Hans.2.2.2/lib/net45/zh-Hans/Microsoft.AspNet.SignalR.SystemWeb.xml
packages/Microsoft.AspNet.SignalR.zh-Hans.2.2.2/.signature.p7s
packages/Microsoft.AspNet.SignalR.zh-Hans.2.2.2/Microsoft.AspNet.SignalR.zh-Hans.2.2.2.nupkg
packages/Microsoft.Owin.4.0.0/.signature.p7s
packages/Microsoft.Owin.4.0.0/Microsoft.Owin.4.0.0.nupkg
packages/Microsoft.Owin.4.0.0/lib/net45/zh-Hans/Microsoft.Owin.xml
packages/Microsoft.Owin.4.0.0/lib/net451/Microsoft.Owin.XML
packages/Microsoft.Owin.Host.SystemWeb.4.0.0/.signature.p7s
packages/Microsoft.Owin.Host.SystemWeb.4.0.0/Microsoft.Owin.Host.SystemWeb.4.0.0.nupkg
packages/Microsoft.Owin.Host.SystemWeb.4.0.0/lib/net45/zh-Hans/Microsoft.Owin.Host.SystemWeb.xml
packages/Microsoft.Owin.Host.SystemWeb.4.0.0/lib/net451/Microsoft.Owin.Host.SystemWeb.xml
packages/Microsoft.Owin.Host.SystemWeb.zh-Hans.4.0.0/.signature.p7s
packages/Microsoft.Owin.Host.SystemWeb.zh-Hans.4.0.0/Microsoft.Owin.Host.SystemWeb.zh-Hans.4.0.0.nupkg
packages/Microsoft.Owin.Host.SystemWeb.zh-Hans.4.0.0/lib/net45/zh-Hans/Microsoft.Owin.Host.SystemWeb.xml
packages/Microsoft.Owin.Security.4.0.0/.signature.p7s
packages/Microsoft.Owin.Security.4.0.0/Microsoft.Owin.Security.4.0.0.nupkg
packages/Microsoft.Owin.Security.4.0.0/lib/net45/zh-Hans/Microsoft.Owin.Security.xml
packages/Microsoft.Owin.Security.4.0.0/lib/net451/Microsoft.Owin.Security.XML
packages/Microsoft.Owin.Security.zh-Hans.4.0.0/.signature.p7s
packages/Microsoft.Owin.Security.zh-Hans.4.0.0/Microsoft.Owin.Security.zh-Hans.4.0.0.nupkg
packages/Microsoft.Owin.Security.zh-Hans.4.0.0/lib/net45/zh-Hans/Microsoft.Owin.Security.xml
packages/Microsoft.Owin.zh-Hans.4.0.0/.signature.p7s
packages/Microsoft.Owin.zh-Hans.4.0.0/Microsoft.Owin.zh-Hans.4.0.0.nupkg
packages/Microsoft.Owin.zh-Hans.4.0.0/lib/net45/zh-Hans/Microsoft.Owin.xml
packages/Owin.1.0/.signature.p7s
packages/Owin.1.0/Owin.1.0.nupkg |