2016-09-02 2 views
0

저는 SignalR을 처음 접해 보았습니다. 실마리가 없습니다. 스트림에 연결하고 일부 데이터를 검색해야합니다. 소유자로부터 도움을 받았지만 JavaScript로 작성하는 방법을 알지 못합니다. SignalR JavaScript 클라이언트가 연결

private static HubConnection _hubConnection; 
private static IHubProxy _hubProxy; 

_hubConnection = new HubConnection("https://sesignalr.esmartapi.com/realtime"); 
_hubProxy = _hubConnection.CreateHubProxy("timeseriesHub"); 
_hubProxy.On<ValueResult>("broadCastValue", RecieveServerStreamMessageObject); 

_hubConnection.Start().Wait(); 

_hubProxy.Invoke("Subscribe", assetId).Wait(); 


private static void RecieveServerStreamMessageObject(ValueResult message) 
{ 
    Console.WriteLine(message.ValueTime.ToShortDateString() + " " + message.ValueTime.ToLongTimeString() + " - Value: " + message.Value + " (id " + message.AssetId + ")"); 
} 

public class ValueResult 
{ 
    public string AssetId { get; set; } 
    public int ValueCategory { get; set; } 
    public DateTime ValueTime { get; set; } 
    public Double Value { get; set; } 
    public int ValueUnit { get; set; } 
} 

그래서 나는 다음과 같은 자바 스크립트 코드를 사용하여 연결을 시도 :

그들은 나에게 다음과 같은 C# 코드했다

:

var connection = $.hubConnection('https://sesignalr.esmartapi.com/realtime'); 
var proxy = connection.createHubProxy('timeseriesHub'); 

// receives broadcast messages from a hub function, called "broadcastMessage" 
proxy.on('broadcastMessage', function(message) { 
    console.log(message); 
}); 

// attempt connection, and handle errors 
connection.start({ jsonp: true }) 
.done(function(){ console.log('Now connected, connection ID=' + connection.id); }) 
.fail(function(){ console.log('Could not connect'); }); 

그리고 이것을 다음과 같은 오류를 준 실행 403 (금지됨 : JSONP가 비활성화 됨)

JavaScript를 사용하여 위의 C# 코드를 다시 작성해야한다고 생각합니다. 그러나 C# 지식이 제한되어 있으며 이에 대한 경험이 없습니다. 어떻게해야할지 모르겠다. 어떤 도움을 받으셔도 좋습니다.

+0

어디에서 스크립트를로드합니까? 연결하려는 서버가 아닌 경우 javascript와 동일한 출처 정책 (https://en.wikipedia.org/wiki/Same-origin_policy)을 클릭하면 CORS를 사용하도록 설정해야합니다. 자세한 내용은 http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client에서 확인할 수 있습니다. – Pawel

답변

0

자바 스크립트를 사용하여 스트림에 실제로 연결할 수 있다고 생각하지 않습니다. 그 이상의 알림 프레임 워크입니다. javascript 클라이언트에게 무언가가 변경되었다는 사실을 알리고 다른 서버 호출을하거나 또는 보내는 통지의 데이터를 통해 업데이트해야합니다.

그 C# 코드는 끔찍한 데, 비동기 알림 프레임 워크에서 동기 스트림을 만들려고합니다. Signalr은 이런 식으로 잘 작동하지 않습니다. IMO.

관련 문제