有人可以向我解释信号器/集线器文件的工作原理吗?
阅读文档后,它说该文件是在运行时生成的。但是,当我第一次加载网站时,您将其包含在所有其他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浏览器如何能够像这样请求它?
感谢您的解释!
答案 0 :(得分:7)
就像文档说的那样,JS是自动生成的。文件本身不会存储在文件系统中,而是根据请求(可能已缓存)生成到/signalr/hubs
位置。
在浏览器中输入http://myServer:port/signalr/hubs
,您就会看到js文件的样子。
原则与每个Web应用程序相同:您导航到页面时所看到的确切文件不是文件系统中某个文件的副本,而是它的结果服务器代码正在运行。安装SignalR会设置一个路径来处理对/signalr/hubs
发出的请求,并在被请求时返回组成JS文件的字符串。
此代码配置为在您将SignalR dll添加到项目时运行,并在执行以下语句时准备服务器以使用SignalR,通常在Startup.cs
或您的Owin启动类中。
app.MapSignalR();
答案 1 :(得分:2)
<!--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