我目前有一个使用WebApi创建的API解决方案来托管Hub。 当我在这个解决方案中创建一个MVC项目时,SignalR正常工作并且符合预期。
除了对jquery.signalR-2.0.2.js的唯一引用之外,我有一个单独的项目没有与之关联的Microsoft基础结构
当我在这个项目中引用它时找不到(我的理解是这是自动生成的)。有没有办法在单独的HTML / JS解决方案中使用signalR,或者我只能在同一个解决方案中创建我的项目?
答案 0 :(得分:2)
是的,可以在客户端进行。我正在使用jquery.signalR-2.0.2.js
引用使用SignalR v2.0.2的AngularJS Web应用程序。
在服务器端,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 Web客户端访问。
答案 1 :(得分:2)
当然可以。下载/保存或生成代理文件。要生成安装Microsoft.AspNet.SignalR.Utils NuGet包。在无MS客户端项目中包含生成的代理(js脚本)。
如果您的客户端部署在不同的域名下,然后是中心端点,请配置对跨域请求的支持。
如果客户端需要JSONP(以支持旧浏览器中的跨域请求),则需要通过将HubConfiguration对象上的EnableJSONP设置为true来显式启用它。默认情况下禁用JSONP,因为它不如CORS安全。