示例here和文档here似乎显示了如何使用JavaScript SignalR libray执行此操作,我正在尝试自己使用控制台客户端应用程序来解决这个问题,而没有任何成功。
这是我的客户端控制台应用程序代码,只关注GetAllStocks而不是此时的更新:
using System;
using System.Collections;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR.Client.Hubs;
namespace StockTicker.Client
{
class Program
{
static void Main(string[] args)
{
RunAsync().Wait();
}
private static async Task RunAsync()
{
var hubConnection = new HubConnection("http://localhost:8080/");
IHubProxy stockTickerMini= hubConnection.CreateHubProxy("stockTickerMini");
stockTickerMini.On("GetAllStocks", stocks =>
{
foreach (var stock in stocks)
{ Console.WriteLine(stock.Symbol + ":" + stock.Price); }
});
await hubConnection.Start();
}
}
}
答案 0 :(得分:0)
您拥有的代码不正确。 GetAllStocks是客户端可以在服务器上调用的方法(例如,它是服务器公开的东西)。你可以这样做:
var stocks = await stockTickerMini.Invoke<IEnumerable<Stock>>("GetAllStocks");
如果您想在更新库存时回电话,那么您需要查看服务器端在客户端对象上回拨的内容:
这里详细说明:
http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-net-client#establishconnection