Question: I have SingnalR (OWIN self-hosted) server hub working with .net client. Now i'm preparing to write web client. I see that hub scripts are served <http://localhost:10102/signalr/hubs> but cannot see Scripts/jquery-*.min.js and Scripts/jquery.signalR-*.min.js.

I assume those scripts are not served from server hub (but by default included by nuget to solution) - am i right or missing something? 
Is there a way to reference those scripts directly form server (not to copy and host them on javascript client side)?

Answer: 
**General:**

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

> 
> A JavaScript client requires references to jQuery and the SignalR core
>  JavaScript file. The jQuery version must be 1.6.4 or major later
>  versions, such as 1.7.2, 1.8.2, or 1.9.1. If you decide to use the
>  generated proxy, you also need a reference to the SignalR generated
>  proxy JavaScript file. The following example shows what the references
>  might look like in an HTML page that uses the generated proxy.
> 
> 
> 

You have only to add the following scripts to your index.html (take care about the versions):

```
<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>

```

**Serve these files from server:**

1. Create directory in server project where you place these JS Files
2. Configure your server that he serves theses files. For that add `app.UseFileServer();` to you `Configure(...)` method in Startup class. (See details about service files: <https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files>)
3. Add the required scripts in client. There is an example (change adresses and script file to your files and you server adress:

`<script type="text/javascript" src="http://localhost:10310/scripts/signalr-clientES5-1.0.0-alpha2-final.js></script>`
Here's the EXACT solution I came into, based on answers inside this thread:

Static files (like additional javascript files) can be served within same host with configuration of below. Scripts will be available at http://{yourhost}/scripts/{scriptName} when placed inside \Scripts folder iniside solution ('copy if newer' has to be set for 'Copy To Output Directory' for each of the files). 

```
    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 Man