我有一个服务并希望添加通过SignalR(在OWIN上)与它交互的功能。有很多关于如何向客户端发送消息的示例,但是如何从客户端接收消息并将消息转发给父服务?SignalR将数据传递给包含类
例如
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()
具有编译时错误:
"cannot access a non-static member of outer type MyService via nested type MyHub".
我明白为什么会这样,但不知道如何正确地做到这一点。
谢谢!准确的代码,易于集成,简明而全面的讨论注意事项和选项。 – swordfishBob
小修改:其中一个总结句子含糊不清,最初遗漏了一个关于封装和耦合的重要问题。 –
看起来最清洁的方法是使用事件。 – swordfishBob