c# – SignalR未触发OnDisconnected
发布时间:2020-12-15 21:07:44 所属栏目:百科 来源:网络整理
导读:问题: SignalR未在我的网络服务器上触发OnDisconnected.这很简单,但没有开火.我试过了: 关闭浏览器窗口 导航 重新加载 从客户端连接SignalR连接上的停止(). public override Task OnDisconnected(bool stopCalled) { LogUtil.LogInfo("Disconn"); return b
问题:
SignalR未在我的网络服务器上触发OnDisconnected.这很简单,但没有开火.我试过了: >关闭浏览器窗口 public override Task OnDisconnected(bool stopCalled) { LogUtil.LogInfo("Disconn"); return base.OnDisconnected(stopCalled); } 我正在使用SignalR 2.2.0.0和OnConnected正常工作. 解决方法
我也有这个问题,我不得不使用LongPolling.我也找不到任何断开/重新连接javascript代码的当前示例.
这是我的代码(为了完整性,不包括shoddy html): <hr /> <style> table { table-layout: fixed; } table th,table td { overflow: hidden; } </style> <div id="logs"> <table id="logTable" class="table"> <thead> <tr> <th style="width: 20%">Time</th> <th style="width: 5%">Level</th> <th>Message</th> </tr> </thead> <tbody></tbody> </table> </div> <script src="~/lib/jquery/dist/jquery.js"></script> <script src="/lib/signalr-clientES5-1.0.0-alpha2-final.js" type="text/javascript"></script> <script type="text/javascript"> // global refs var transportType; var logger; var loggingHub; var loggingConnection; function prependLogRow(logEvent) { var d = new Date(logEvent.timeStamp); //.ToString("dd/MM H:mm:ss"); var m = logEvent.message; var s = "<tr><td>" + d + "</td><td>" + logEvent.level + "</td><td>" + m + "</td></tr>"; $("#logTable tbody").prepend(s); var rowCount = $('#logTable tr').length; if (rowCount > 500) { $("#logTable").find("tr:gt(250)").remove(); } }; function createLogEvent(message) { var logEvent = {}; logEvent.timeStamp = new Date(); logEvent.level = 'Info'; logEvent.message = message; return logEvent; }; function bindEvents(logger) { logger.connection.onclose = (e) => { var logEvent = createLogEvent('Logger disconnected. Retrying...'); prependLogRow(logEvent); setTimeout(function () { transportType = signalR.TransportType.LongPolling; //;WebSockets logger = new signalR.ConsoleLogger(signalR.LogLevel.Trace); loggingHub = new signalR.HttpConnection(`https://${document.location.host}/signalr`,{ transport: transportType,logger: logger }); loggingConnection = new signalR.HubConnection(loggingHub,logger); bindEvents(loggingConnection); var logEvent = createLogEvent('Logger reconnected.'); prependLogRow(logEvent); },1000); // Restart connection after a second. }; logger.on('Log',(logEvent) => { prependLogRow(logEvent); }); logger.start().catch(err => { console.log('connection error'); }); }; $(document).ready(function () { transportType = signalR.TransportType.LongPolling; //;WebSockets logger = new signalR.ConsoleLogger(signalR.LogLevel.Trace); loggingHub = new signalR.HttpConnection(`https://${document.location.host}/signalr`,logger: logger }); loggingConnection = new signalR.HubConnection(loggingHub,logger); bindEvents(loggingConnection); var logEvent = createLogEvent('Logger loaded. Please wait...'); prependLogRow(logEvent); }) </script> 这段代码感觉不对,但这是我能够可靠地工作的唯一迭代. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |