2016-03-02 40 views
2

有人可以向我解釋信號/集線器文件是如何工作的嗎?SignalR - 信號/集線器文件

閱讀完文檔後,說文件是在運行時生成的。然而,當我第一次加載一個網站,你包括它與你所有的其他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> 

這是如何工作的?

我無法在磁盤上找到該文件,那麼Web瀏覽器如何能夠像這樣請求它?

感謝您的任何解釋!

回答

6

就像文檔說的那樣,JS是自動生成的。文件本身不會存儲在文件系統中,而是根據請求(可能緩存)生成到/signalr/hubs位置。

在您的瀏覽器中輸入http://myServer:port/signalr/hubs,您將看到js文件的外觀。

原理與每個Web應用程序相同:導航到頁面時看到的確切文件不是文件系統中某個文件的副本,而是它是服務器的結果代碼運行。安裝SignalR會建立一條路徑來處理對/signalr/hubs的請求,並在請求時返回組成JS文件的字符串。

將代碼配置爲當您將SignalR dll添加到項目時運行,並在執行以下語句時準備服務器使用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> 

的文件解釋說,它自動生成的文件,這意味着該文件實際上並不在我們的項目中。 實際上它是在請求發送到服務器時生成的運行時。

$(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