SignalR:未在负载均衡器Web服务器中的中心“ MessagesHub”上触发客户端中心事件“ updateMessages”

时间:2018-08-16 12:16:19

标签: signalr

当前,我正在使用Signal R概念来实现桌面通知。部署在具有必备SignalR 2.2版本,Visual Studio 2013,.Net Framework 4.0,Windows Server 2008 R2,IIS 7.5的Web服务器中的代码。当新的匹配项落在数据库表SMS中时,将显示通知功能。该消息将在右下角的屏幕中显示给适当的用户。下面的代码使用signalR概念实现桌面通知。 SignalR未触发负载均衡器机器上的集线器MessagesHub上的客户端集线器事件updateMessages。请让我知道需要进行任何更改。在本地和正常的Web服务器中,它都可以正常工作。在负载均衡器Web服务器中,不会触发客户端中心事件。我为这个问题感到震惊和震惊。

###Owin.Startupfile code below###
public class Startup {
public void Configuration(IAppBuilder app){
app.MapSignalR(); } }

###SignalR MessageHub code below###
public class NotificationListner{
public Timer  Interval;
public NotificationListner(TimeSpan interval){
Interval = new Timer(Loop, null, TimeSpan.Zero, interval);}
private static void Loop(object state){
try { IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MessagesHub>();
context.Clients.All.updateMessages();}
catch (Exception Ex){
throw new Exception("SignalR context exception: \"" + Ex.Message);} } }
public class MessagesHub : Hub {
public static NotificationListner MyInterval = new NotificationListner    (TimeSpan.FromSeconds(10)); }

###UI code to show the notification popup using SignalR###
<asp:PlaceHolder runat="server">    
<%= System.Web.Optimization.Scripts.Render("~/bundles/jquery-1.6.4") %>         
<%= System.Web.Optimization.Scripts.Render("~/bundles/signalR") %>      
</asp:PlaceHolder>
<!--Reference the autogenerated SignalR hub script. -->
<script type="text/javascript" src="/signalr/hubs"></script>

jq162 = jQuery.noConflict(true);
jq162(function () {
try {                
jq162.connection.hub.logging = true;                    
jq162.connection.hub.start().done(function () {                    
getAllSMSMessages();
}).fail(function (e) { 
alert(e.error);
});
jq162.connection.hub.disconnected(function () {                    
if (jq162.connection.hub.lastError)
{ alert("Disconnected. Reason: " +   jq162.connection.hub.lastError.message); }
});
jq162.connection.messagesHub.client.updateMessages = function () {
getAllSMSMessages();
};
} catch (e) {                
alert(e.error);}
});

0 个答案:

没有答案