サービスがあり、SignalR (OWIN 上) を介してサービスと対話する機能を追加したいと考えています。クライアントにメッセージを送信する方法の例はたくさんありますが、クライアントからメッセージを受信して親サービスに転送するにはどうすればよいでしょうか?
例えば
public class MyService
{
...
public void LaunchSR()
{
_srWebApp = WebApplication.Start<SrStartup>("http://localhost:" + _signalRPortNumber.ToString());
_srContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
}
public class SrStartup
{
public void Configuration(Owin.IAppBuilder app)
{
app.MapConnection("/raw", typeof(PersistentConnection), new ConnectionConfiguration { EnableCrossDomain = true });
app.MapHubs();
}
}
public class MyHub : Hub
{
public void SendToServer(string data)
{
//!! Don't have a reference to MyService instance,
//!! so LocalCommand is out of scope
LocalCommand(data, null);
}
}
public void LocalCommand(data)
{
// Do Stuff in the main service context, accessing private objects etc.
}
}
内部のコードにSendToServer()
はコンパイル時エラーがあります:
「ネストされた型 MyHub を介して外部型 MyService の非静的メンバーにアクセスできません」。
なぜこれが起こるのか理解していますが、これを正しく行う方法がわかりません。