2016-03-08 2 views
3

Я использую Visual studio 2010 и jquery signal r 1.1.4 для отправки уведомлений, как у нас в facebook. Ниже метод используется концентраторКлиентский код Signal R не вызывает HUb

public class BroadcastMessage:Hub 
    { 
     public void BroadcastNotifications(string message) 
     { 
      Utility.AddNotification(message); //to save data to database 

      int UnreadCount = Utility.getUnreadMessageCount(); //get the unread count 

      IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BroadcastMessage>(); 
      context.Clients.All.receiveNotification(message, UnreadCount); 
     } 
     public void SendMessages() 
     { 
      IHubContext context = GlobalHost.ConnectionManager.GetHubContext<BroadcastMessage>(); 
      context.Clients.All.updateMessages(); 
     } 
    } 

И частичный вид, где у меня есть текст Ого, чтобы войти в сообщение с уведомлением и кнопку посыла @model MyProject.Models.Notification

@

using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Notification</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Message) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Message) 
      @Html.ValidationMessageFor(model => model.Message) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.LogonID) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.LogonID) 
      @Html.ValidationMessageFor(model => model.LogonID) 
     </div> 
     <p> 
      <input type="button" id="broadcastNotification" value="Send" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

@section Scripts { 
<script src="~/Scripts/jquery-1.12.0.js" type="text/javascript"></script> 
<script src="~/Scripts/jquery.signalR-1.1.4.js" type="text/javascript"></script> 
<script src="~/signalr/hubs"></script> 
<script type="text/javascript"> 
    $(function() { 
     $.connection.hub.logging = true; 
     var proxy = $.connection.broadcastMessage; 

     $.connection.hub.start().done(function() { 
      $('#broadcastNotification').click(function() { 
       proxy.server.broadcastNotifications($("#Message").val()).done(function() { 
        proxy.server.sendMessages(); 
       }); 
      }); 
     }); 

    }); 
</script> 
} 

Global.asax файл

protected void Application_Start() 
     { 
      //To register the default Hubs route 
      RouteTable.Routes.MapHubs(); 
} 

здесь мой метод сигнала r r не запускается при нажатии кнопки «Отправить». Я попробовал http://localhost:XXXX/signalr Там я получил ошибку «Ошибка протокола: Неизвестный транспорт». может кто-нибудь покажет мне, какую ошибку я сделал здесь.

+0

Вы можете добавить консольный вывод хрома в вашем посте? –

ответ

0

Я предлагаю вам добавить протоколирование в вашем запуске:

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     var hubConfiguration = new HubConfiguration { EnableDetailedErrors = true }; 
     ConfigureAuth(app); 
     app.MapSignalR(hubConfiguration);   
    } 
} 
Смежные вопросы