信号器托管服务器中javascript客户端的客户端脚本

时间:2017-11-08 09:43:12

标签: javascript c# signalr

我有使用.net客户端的SingnalR(OWIN自托管)服务器中心。现在我准备写Web客户端了。我看到中心脚本服务http://localhost:10102/signalr/hubs但看不到Scripts / jquery- .min.js和Scripts / jquery.signalR - .min.js。

我认为这些脚本不是从服务器中心提供的(但默认情况下由nuget包含在解决方案中) - 我是对还是缺少某些东西? 有没有办法直接从服务器引用这些脚本(不是在javascript客户端复制和托管它们)?

3 个答案:

答案 0 :(得分:2)

常规

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

  

JavaScript客户端需要引用jQuery和SignalR核心   JavaScript文件。 jQuery版本必须是1.6.4或更高版本   版本,例如1.7.2,1.8.2或1.9.1。如果你决定使用   生成代理,您还需要对SignalR生成的引用   代理JavaScript文件。以下示例显示了引用内容   可能看起来像在使用生成的代理的HTML页面中。

您只需将以下脚本添加到index.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>

从服务器提供这些文件:

  1. 在放置这些JS文件的服务器项目中创建目录
  2. 配置您提供服务这些文件的服务器。为此,在启动类中为app.UseFileServer();方法添加Configure(...)。 (查看有关服务文件的详细信息:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files
  3. 在客户端添加所需的脚本。有一个例子(将地址和脚本文件更改为您的文件和服务器地址:

    <script type="text/javascript" src="http://localhost:10310/scripts/signalr-clientES5-1.0.0-alpha2-final.js></script>

答案 1 :(得分:0)

实际上,您不需要脚本来实现SygnalR服务(后端部分)。要在客户端index.html和您的服务之间建立连接,您需要使用某种类型的客户端库来与SygnalR一起建立连接。

答案 2 :(得分:0)

以下是我根据此主题中的答案进入的确切解决方案:

静态文件(如其他javascript文件)可以在同一主机中提供,配置如下。当放置在\ Scripts文件夹内部解决方案中时,脚本将在http:// {yourhost} / scripts / {scriptName}中提供(对于每个文件,必须为'复制到输出目录'设置'复制,如果更新')。

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Branch the pipeline here for requests that start with "/signalr"
            app.Map("/signalr", map =>
            {
                // Setup the CORS middleware to run before SignalR.
                // By default this will allow all origins. You can 
                // configure the set of origins and/or http verbs by
                // providing a cors options with a different policy.
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };
                // Run the SignalR pipeline. We're not using MapSignalR
                // since this branch already runs under the "/signalr"
                // path.
                map.RunSignalR(hubConfiguration);
            });

            // Serving javascript libraries required for client as static content from Scripts folder
            app.UseStaticFiles(new StaticFileOptions() {
                RequestPath = new PathString("/scripts"),
                FileSystem = new PhysicalFileSystem(@".\Scripts"),
            });
        }
    }

IT人