是否可以在Microsoft环境之外使用SignalR?

时间:2016-01-28 15:59:24

标签: asp.net signalr signalr-hub signalr.client

我目前有一个使用WebApi创建的API解决方案来托管Hub。 当我在这个解决方案中创建一个MVC项目时,SignalR正常工作并且符合预期。

除了对jquery.signalR-2.0.2.js的唯一引用之外,我有一个单独的项目没有与之关联的Microsoft基础结构

当我在这个项目中引用它时找不到(我的理解是这是自动生成的)。有没有办法在单独的HTML / JS解决方案中使用signalR,或者我只能在同一个解决方案中创建我的项目?

2 个答案:

答案 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客户端访问。

此处有更多信息:ASP.NET SignalR Hubs API Guide - JavaScript Client

答案 1 :(得分:2)

当然可以。下载/保存或生成代理文件。要生成安装Microsoft.AspNet.SignalR.Utils NuGet包。在无MS客户端项目中包含生成的代理(js脚本)。

如果您的客户端部署在不同的域名下,然后是中心端点,请配置对跨域请求的支持。

如果客户端需要JSONP(以支持旧浏览器中的跨域请求),则需要通过将HubConfiguration对象上的EnableJSONP设置为true来显式启用它。默认情况下禁用JSONP,因为它不如CORS安全。