2016-09-02 2 views
0

私はSignalRを初めて使いました。私は本当に手がかりを持っていません。私はストリームに接続し、いくつかのデータを取得する必要があります。私は所有者からいくつかの助けを得ましたが、JavaScriptを使ってそれを作成する方法はわかりません。SignalR JavaScript client connect

彼らは私に次のC#コードを与えた:

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

だから私は、次のJavaScriptコードを使用して接続を試してみました:

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

どこからスクリプトを読み込みますか?あなたが接続しようとしているサーバーからではない場合、あなたはCORSを有効にする必要があるjavascriptの同じ発信元ポリシー(https://en.wikipedia.org/wiki/Same-origin_policy)を打っています。詳細はこちらをご覧ください:http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client – Pawel

答えて

0

私はあなたが実際にjavascriptを使用してストリームに接続できるとは思いません。その多くは通知フレームワークです。 javascriptクライアントに何か変更があったことを通知し、別のサーバー呼び出しを行うか、送信した通知のデータから更新する必要があります。

C#コードは面倒ですが、非同期通知フレームワークから同期ストリームを作成しようとしています。 Signalrはこのようにうまく動作しません。 IMO。

関連する問題