我是SignalR的新手,并尝试在特定事件从API触发时实施通知。
尝试了什么:
Hub:
$c
控制器:
public class NotificationHub : Hub
{
private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
public static void Send( string content)
{
hubContext.Clients.All.addMessage(content);
}
}
在视图中我应该使用什么来显示在条件下触发的消息?
查看,尝试过:
//static event from external API
public static void onTick(Tick TickData)
{
if(TickData.InstrumentToken == buy.InstrumentToken)
{
NotificationHub.Send(TickData.Bid);
}
}
还有什么需要让这个工作吗?
编辑:
阿什利的回答让我更接近,而且下面也有一些事情遗失,
connection.NotificationHub $(document).ready(function () {
var conn = $.connection.NotificationHub;
conn.client.addMessage = function (message) {
alert(message);
};
});
connection.notificationHub`
js文件引用的顺序应该是
1 jquery-1.10.2.min.js
2 jquery.signalR-2.1.0.min.js
3个信号器/集线器
但是现在执行它时会进入.fail(function()并且控制台显示错误, http://127.0.0.1:8080/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&_=1515664348026无法加载资源:net :: ERR_CONNECTION_REFUSE
请指教。提前致谢。
答案 0 :(得分:0)
确保包含SignalR集线器源:
<script type="text/javascript" src="~/signalr/hubs"></script>
您尚未启动SignalR的连接,请添加:
$.connection.hub.start().done(function() {
//connection has started :-)
}).fail(function() {
//connection has failed to start :-(
});
使用您的示例,它将如下所示:
$(document).ready(function () {
var conn = $.connection.NotificationHub;
conn.client.addMessage = function (message) {
alert(message);
};
$.connection.hub.start().done(function() {
//connection has started :-)
alert("connected");
}).fail(function() {
//connection has failed to start :-(
alert("failed");
});
});