1

サービスがあり、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 の非静的メンバーにアクセスできません」。

なぜこれが起こるのか理解していますが、これを正しく行う方法がわかりません。

4

1 に答える 1