2016-01-28 4 views
1

В настоящее время у меня есть API-решение, созданное с помощью WebApi, в котором размещен концентратор. Когда я создаю проект MVC внутри этого решения, SignalR работает правильно и, как ожидалось.Возможно ли использовать SignalR вне среды Microsoft?

У меня есть отдельный проект с отсутствующей инфраструктурой Microsoft, связанной с ним в стороне от единственной ссылки на jquery.signalR-2.0.2.js

Когда я ссылку в этом проекте он не нашел (я понимаю, что это автоматически генерируется). Есть ли способ, с помощью которого я могу использовать signalR в своем отдельном решении HTML/JS или ограничусь ли я созданием своих проектов внутри одного и того же решения?

+0

Кроме ссылки на jquery.signalR .... js - есть ли у вас ссылка на signalr/hubs? Клиент Javascript является автономным и не привязан к какому-либо проекту или решению, но он должен иметь возможность подключаться к серверу. – Pawel

ответ

2

Да, это возможно на стороне клиента. Я работаю над веб-приложением AngularJS, которое использует SignalR v2.0.2, используя ссылку jquery.signalR-2.0.2.js.

На стороне сервера, SignalR необходимо Owin для запуска с помощью этих строк коды в Startup.cs:

public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      // SignalR Hub Startup 
      var hubConfiguration = new HubConfiguration(); 
      hubConfiguration.EnableDetailedErrors = true; 
      hubConfiguration.EnableJavaScriptProxies = true; 
      hubConfiguration.EnableJSONP = false; 

      app.MapSignalR(hubConfiguration); 

     } 
    } 

Затем файл JavaScript будет автоматически генерируются на стороне сервера и может быть доступен клиентом, использующим тег в документе HTML. Вот то, что нужно на стороне клиента для создания хаба:

<script src="Scripts/jquery-1.10.2.min.js"></script> 
<script src="Scripts/jquery.signalR-2.1.0.min.js"></script> 
<script src="signalr/hubs"></script> 

Последняя строка сценария просто ссылка на автоматически генерируемой JavaScript, созданного на стороне сервера. Если вы откроете этот URL-адрес в своем браузере, вы увидите сгенерированный скрипт, к которому будет обращаться веб-клиент не .NET.

Больше информации здесь: ASP.NET SignalR Hubs API Guide - JavaScript Client

2

Конечно, вы можете. Загрузите/сохраните или создайте прокси-файл. Чтобы создать пакет Microsoft.AspNet.SignalR.Utils NuGet. Включите сгенерированный прокси (js-скрипт) в ваш ни один проект клиента MS.

Если ваш клиент развернут под другим доменным именем, то конечная точка концентратора настроит поддержку междоменных запросов.

Если JSONP требуется на клиенте (для поддержки междоменных запросов в старых браузерах), его необходимо будет активировать явно, установив EnableJSONP на объектHubConfiguration в значение true. JSONP отключен по умолчанию, поскольку он менее безопасен, чем CORS.