2016-09-02 2 views
0

Ich bin neu bei SignalR und ich habe wirklich keine Ahnung. Ich muss mich mit einem Stream verbinden und einige Daten abrufen. Ich habe vom Besitzer etwas Hilfe bekommen, aber sie wissen nicht, wie man es mit JavaScript erstellt.SignalR JavaScript Client verbinden

Sie gaben mir die folgenden C# -Code:

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; } 
} 

Also habe ich versucht, die Verbindung den folgenden JavaScript-Code verwendet:

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'); }); 

Und läuft dies den folgenden Fehler gab:

403 (Verboten: JSONP ist deaktiviert.)

Ich denke, ich sollte den obigen C# -Code mit JavaScript neu erstellen, aber mein C# -Wissen ist begrenzt und ich habe keine Erfahrung damit. Ich bin nicht sicher, wie man das macht, jede Hilfe wird geschätzt.

+0

Wohin laden Sie das Skript? Wenn es nicht von dem Server ist, mit dem du dich verbinden willst, triffst du Javascript mit derselben Ursprungsrichtlinie (https://en.wikipedia.org/wiki/Same-origin_policy). In diesem Fall musst du CORS aktivieren. Sie können weitere Details hier finden: http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client – Pawel

Antwort

0

Ich glaube nicht, dass Sie mit Javascript eine Verbindung zu einem Stream herstellen können, es ist eher ein Benachrichtigungsframework. Sie müssen den Javascript-Client benachrichtigen, dass sich etwas geändert hat, und entweder durch einen anderen Serveraufruf oder durch Daten in der Benachrichtigung, die Sie senden, aktualisieren.

Dieser C# -Code ist übrigens schrecklich, er versucht, einen synchronen Stream aus einem asynchronen Benachrichtigungsframework zu erstellen. Signaler wird auf diese Weise nicht gut funktionieren. IMO.

Verwandte Themen