2017-11-08 7 views
1

.net 클라이언트에서 작동하는 SingnalR (OWIN 자체 호스팅) 서버 허브가 있습니다. 이제 웹 클라이언트를 작성할 준비가되었습니다. 허브 스크립트가 http://localhost:10102/signalr/hubs으로 제공되지만 Scripts/jquery- .min.js 및 Scripts/jquery.signalR-.min.js를 볼 수 없습니다.서버의 자바 스크립트 클라이언트 용 클라이언트 호스팅 클라이언트 스크립트

그 스크립트가 서버 허브에서 제공되지 않는다고 가정합니다 (기본적으로 nuget에서 솔루션에 포함됨). 이러한 스크립트를 직접 서버를 참조 할 수있는 방법이 있습니까 (자바 스크립트 클라이언트 측에서 복사 및 호스트하지 않으려면)?

답변

2

일반 :

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

자바 스크립트 클라이언트는 jQuery를하고 SignalR 코어 자바 스크립트 파일에 대한 참조가 필요합니다. jQuery 버전은 1.7.2, 1.8.2 또는 1.9.1과 같이 버전이 1.6.4 이상이거나 이후 버전이 이어야합니다. 생성 된 프록시를 사용하려는 경우 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. 클라이언트에 필요한 스크립트를 추가하십시오. 이 파일에 대한 예 (변경 adresses 및 스크립트 파일은 당신 서버 ADRESS :

    정적 :

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

+0

Scripts/jquery-1.10.2.min.js는 클라이언트 측의 일부입니다. 그것은 signalr 서버 호스트에서 제공 될 수 있습니까? –

+0

@ITMan : 나는 내 anwer을 편집했다. 이 솔루션은 작동합니다. 나는 그것을 짧게 시험했다. – Tester

+0

대답의 영감으로 작동합니다. 당신의 도움을 주셔서 감사합니다! 이 스레드 내부에서 답변을 표시하는 방법을 잘 모르겠습니다 ...? –

0

사실, SygnalR 서비스 (백엔드 파트)를 구현하는 스크립트가 필요하지 않습니다. 클라이언트 index.html과 서비스를 연결하려면 SygnalR과 연동하여 연결을 설정하는 일종의 클라이언트 라이브러리가 있어야합니다.

+0

나는 내가 어디에서 그 스크립트를 포함 할 수 있습니다 알고 있지만 나는 오히려 signalr 서버 호스트에서 해당 서비스를 제공하고 싶습니다.그러면 버전 호환성이 보장됩니다. –

0

여기에 내가이 스레드 내부 응답에 따라,에 와서 정확한 솔루션입니다 아래의 설정을 사용하여 동일한 호스트 내에서 파일 (추가 자바 스크립트 파일과 같은)을 제공 할 수 있습니다. 스크립트는 \ 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 남자