2016-03-02 5 views
2

Может кто-нибудь объяснить мне, как работает файл signalr/hub?SignalR - файл signalr/hubs

После прочтения документации говорится, что файл создается во время выполнения. Однако, когда я сначала загрузить сайт, вы включите его со всеми другими файлами JavaScript, такими как

<script src="Scripts/jquery-1.10.2.min.js"></script> 
<!--Reference the SignalR library. --> 
<script src="Scripts/jquery.signalR-2.1.2.min.js"></script> 
<!--Reference the autogenerated SignalR hub script. --> 
<script src="signalr/hubs"></script> 

Как это работает?

Я не могу найти этот файл на диске вообще, так как веб-браузер может запросить его так?

Спасибо за любые объяснения!

ответ

6

Как и в документации, JS генерируется автоматически. Сам файл не будет сохранен в файловой системе, а скорее сгенерирован по запросу (возможно, кэширован) в /signalr/hubs.

Введите http://myServer:port/signalr/hubs в свой браузер, и вы увидите, как выглядит файл js.

Принцип такой же, как и для каждого веб-приложения: точный файл, который вы видите, когда вы переходите на страницу, не является копией какого-либо файла из файловой системы, а скорее является результатом работы сервера код работает. Установка SignalR устанавливает маршрут обработки запросов, сделанных в /signalr/hubs, и по запросу будет возвращена строка, которая составляет файл JS.

Этот код настроен для запуска при добавлении DLL SignalR в проект и подготовки сервера к использованию SignalR, когда вы выполняете следующий оператор, обычно в Startup.cs или независимо от вашего класса запуска Owin.

app.MapSignalR(); 
+0

Как это работает? Клиент делает запрос для/signalr/hub. IIS наблюдает эту просьбу, как она знает, что служить? – CBaker

+0

см. Мое обновление для получения дополнительной информации – DLeh

+0

Спасибо, что имеет смысл. – CBaker

1
<!--Reference the autogenerated SignalR hub script. --> 
<script src="signalr/hubs"></script> 

Документационные объясняет, что него автоматически генерируемый файл, это означает, что этот файл на самом деле не существует в нашем проекте. Фактически он генерируется Runtime, когда запрос отправляется на сервер.

$(function() { 
     // Declare a proxy to reference the hub. 
     var chat = $.connection.chatHub; 

     // Start the connection. 
     $.connection.hub.start().done(function() { 
      $('#sendmessage').click(function() { 
       // Call the Send method on the hub. 
       chat.server.send($('#displayname').val(), $('#message').val());          
      }); 
     }); 
    }); 

когда вышеупомянутый запрос отправляется на сервер дальнейший процесс сервера можно увидеть в браузере, используя ниже URL, как указано в ответ на #DLeh.

http://myServer:port/signalr/hubs 

также можно увидеть на панели консоли.

Для дальнейшего руководства вы можете использовать следующую ссылку.

https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server

Смежные вопросы