Signalr 如何使用客户端控制台应用程序迭代并写出股票符号和价格?
该示例和文档似乎展示了如何使用JavaScript信号库实现这一点,我正在尝试使用控制台客户端应用程序来获取所有股票,但没有成功 以下是我的客户端控制台应用程序代码,重点是GetAllStocks,而不是此时的更新:Signalr 如何使用客户端控制台应用程序迭代并写出股票符号和价格?,signalr,signalr-hub,signalr.client,Signalr,Signalr Hub,Signalr.client,该示例和文档似乎展示了如何使用JavaScript信号库实现这一点,我正在尝试使用控制台客户端应用程序来获取所有股票,但没有成功 以下是我的客户端控制台应用程序代码,重点是GetAllStocks,而不是此时的更新: using System; using System.Collections; using System.Threading.Tasks; using Microsoft.AspNet.SignalR.Client.Hubs; namespace StockTicker.Cli
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();
}
}
}
您的代码不正确。GetAllStocks是客户端可以在服务器上调用的方法(例如,它是服务器公开的)。你可以做:
var stocks = await stockTickerMini.Invoke<IEnumerable<Stock>>("GetAllStocks");
var stocks=wait stockTickerMini.Invoke(“GetAllStocks”);
如果您希望在股票更新时被回调,则需要查看服务器端在客户端对象上回调的内容:
具体内容如下:
您可能应该显示您编写的代码,以便人们能够提供帮助。确定添加了客户端代码。客户端是否需要对服务器的引用?客户端不需要服务器引用即可工作。显然,如果您有一个在客户端和服务器之间共享的类型,那么它可以存在于共享程序集中。如果您选择在服务器上使用该类型,并且希望在客户端上使用该类型,那么是的,您需要一个引用。也许我不清楚。如果客户机需要使用Stock类,那么您需要对在客户机上定义Stock的程序集(项目)进行引用。是的,这就是我的想法,但在示例中,我没有看到任何关于引用定义Stock类的服务器项目程序集以便在客户机中使用它的内容。