private void OnGroupCreated(object sender, int group) { //var context = GlobalHost.ConnectionManager.GetHubContext<GazeHub>(); // MK: hub clients do not receive RPC calls if this context is used GazeHub hub = this; // instead context, we use this gazehub instance to access clients int framerate = group; string groupName = GetGroupName(group); if (subscriptions.ContainsKey(group) == false) { var gazeData = _observer.Data; if (framerate != DEFAULT_SAMPLING && framerate > 0) { gazeData = gazeData.Sample(TimeSpan.FromMilliseconds(1000d / framerate)); } var clientsGroup = hub.Clients.Group(groupName); IDisposable subscription = gazeData.Subscribe(g => clientsGroup.OnGazeData(g)); subscriptions.TryAdd(group, subscription); } }
private void OnFirstClientConnected(object sender, EventArgs e) { GazeHub hub = this; stateSubscription.Disposable = _observer.States.Subscribe(s => hub.Clients.All.OnStateChanged(s)); }