0

나는 signalR 웹 사이트 .net 코어를 설정했습니다. 내 허브 내 함수이다 : 나는 또한 다음 JS와 검사를하지using signalR.net 코어 클라이언트

public async Task Notify(int id) { 
    await Clients.All.InvokeAsync("Notified", id); 
} 

:

let connection = new signalR.HubConnection(myURL); 

    connection.on('Notified', data => { 
     console.log(4, data); 
    }); 

    connection.start(); 

JS 코드는 잘 작동하는 것 같다 내가 connection.Invoke('Notify')을하려고 할 때 로그를 참조하십시오.

이제 호출 할 수있는 콘솔 앱이 있습니다. 나는 이것을 두 가지 방법으로 시도하고 있으며 두 가지 해결책을 염두에 두지 않는다. 1. id를 가져 와서 'Notified'를 호출 할 수있는 signalR 웹 사이트 내의 mvc 컨트롤러. 2. 콘솔 앱에서 클라이언트 라이브러리 Microsoft.AspNetCore.SignalR.Client을 사용하십시오.

방법 I는이 같은 고전적인 asp.net에서 수행 한 1 :

GlobalHost.ConnectionManager.GetHubContext(hubName) 

그러나 .NET의 핵심에서이 작업을 수행 할 수있는 방법을 찾을 수 없습니다.

내가 라이브러리를 사용하고 지금까지 시도했다 2 방법 :

var con = new HubConnectionBuilder(); 
con.WithUrl(myURL);  
var connection = con.Build(); 
connection.InvokeAsync("Notify",args[0]).Wait(); 

이 내가 JS 코드와 같은 방법으로 연결을 만드는 데 온 가장 가까운 것입니다. 그러나이 코드는 connection.InvokeAsync을 호출 할 때 널 포인터를 던집니다. connection 개체가 null이 아닙니다. null 인 내부 개체 인 것 같습니다. 스택 추적에 따라 MoveNext() 함수가 내부적으로 호출 될 때 예외가 throw됩니다.

답변

-1

모두 현재 보이는 것은 아닙니다. 현재로서는 일시적인 희망적인 방법을 사용했습니다.

내가 만든 허브에 대한 다음과 같은 기본 클래스 사용했다 : 당신이 IHubContext을 주입 내 응답으로 당

public abstract class MyHub : Hub 
{ 

    private static Dictionary<string, IHubClients> _clients = new Dictionary<string, IHubClients>(); 

    public override Task OnConnectedAsync() 
    { 
     var c = base.OnConnectedAsync(); 
     _clients.Remove(Name); 
     _clients.Add(Name, Clients); 
     return c; 
    } 

    public static IHubClients GetClients(string Name) { 
     return _clients.GetValueOrDefault(Name); 
    } 

} 
+0

이 GlobalHost를 대체 - 여기에 몇 가지 코드 : https://github.com/aspnet/ SignalR/issues/884 – Pawel

+0

LOL! -1은 뭐니? 누군가에게이 일을하지 않습니까? –

+0

응답이 올바르지 않습니다. 첫 번째가 실제로 가능하고 두 번째가 아마도 연결을 시작하지 않고 보내려고 시도하는 중 둘 다 가능하다면 둘 다 불가능하다고 말합니다. 여전히 SignalR의 버그 (알파 버전에 관한 이야기입니다). 그러나 연결을 시작하지 않으면 예상 할 수없는 어떤 것도 보내질 것입니다. (NullReferenceException에 대한 전체 스택 추적은 문제가있는 곳에서 핀을 가리키는 데 유용하며 코드가 수정되도록 도움을 줄 수 있습니다). – Pawel

0
  1. GlobalHost가 없어졌습니다. IHubContext<THub>과 같이 삽입해야합니다. this sample.

  2. 이것은 SignalR alpha1의 버그 일 수 있습니다. https://github.com/aspnet/signalr에 문제를 신고하고 간단한 repro를 포함 할 수 있습니까?