私はこの問題を解決することができ、解決策を得ました。
起動時のSignalR構成。ウェブAPIでWeb APIのWeb APIを追加しましたハブで
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR("/signalr", new Microsoft.AspNet.SignalR.HubConfiguration());
}
}
public class ServiceStatusHub : Hub
{
private static IHubContext hubContext =
GlobalHost.ConnectionManager.GetHubContext<ServiceStatusHub>();
public static void GetStatus(string message)
{
hubContext.Clients.All.acknowledgeMessage(message);
}
}
におけるCSのアクションメソッド
public IEnumerable<string> Get()
{
// Query service to check status
ServiceStatusHub.GetStatus("Please check status of the LDAP!");
return new string[] { "val1", "val2" };
}
コンソールアプリケーションではSignalRクライアントに
public class SignalRMasterClient
{
public string Url { get; set; }
public HubConnection Connection { get; set; }
public IHubProxy Hub { get; set; }
public SignalRMasterClient(string url)
{
Url = url;
Connection = new HubConnection(url, useDefaultUrl: false);
Hub = Connection.CreateHubProxy("ServiceStatusHub");
Connection.Start().Wait();
Hub.On<string>("acknowledgeMessage", (message) =>
{
Console.WriteLine("Message received: " + message);
/// TODO: Check status of the LDAP
/// and update status to Web API.
});
}
public void SayHello(string message)
{
Hub.Invoke("hello", message);
Console.WriteLine("hello method is called!");
}
public void Stop()
{
Connection.Stop();
}
}
Program.csのクラスで
class Program
{
static void Main(string[] args)
{
var client = new SignalRMasterClient("http://localhost:9321/signalr");
// Send message to server.
client.SayHello("Message from client to Server!");
Console.ReadKey();
// Stop connection with the server to immediately call "OnDisconnected" event
// in server hub class.
client.Stop();
}
}
を追加します。今すぐ郵便配達でWeb APIを実行しても、コンソールアプリケーションを実行します。双方向のコミュニケーションが確立されます。
注:以下のコードは、コンソールが閉じられたときにすぐにOnDisconnectedイベントがトリガーされなかった問題を修正したものです。
public void Stop()
{
Connection.Stop();
}
Check the image showing result.
こんにちはフレッド・ハン、お返事に感謝。 Windowsサービスがダウンしている場合、どのようにWeb APIが知ることができますか? –