【发布时间】:2016-09-02 08:58:17
【问题描述】:
我是 SignalR 的新手,我真的不知道。我需要连接到流并检索一些数据。我从所有者那里得到了一些帮助,但他们不知道如何使用 JavaScript 创建它。
他们给了我以下 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# 知识有限,我没有这方面的经验。我不知道该怎么做,感谢任何帮助。
【问题讨论】:
-
从哪里加载脚本?如果它不是来自您尝试连接的服务器,则您正在使用 javascript 同源策略 (en.wikipedia.org/wiki/Same-origin_policy),在这种情况下,您需要启用 CORS。您可以在这里找到更多详细信息:asp.net/signalr/overview/guide-to-the-api/…
标签: javascript c# jquery signalr