示例#1
0
        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);
            }
        }
示例#2
0
        private void OnFirstClientConnected(object sender, EventArgs e)
        {
            GazeHub hub = this;

            stateSubscription.Disposable = _observer.States.Subscribe(s => hub.Clients.All.OnStateChanged(s));
        }