Пример #1
0
        protected override void OnPackageReceived(ServerSideClient client, Package package)
        {
            switch ((Commands)package.Command)
            {
            // Broadcast messages to all clients.
            case Commands.InstantMessage:
                var message = InstantMessageContent.Deserialize(package.Content);
                messages.Add(message);
                Pusher.Push(message);
                BroadcastPackageAsync(package);
                break;

            // Send screenshot specific client.
            case Commands.Screenshot:
                var screenshot = ScreenshotContent.Deserialize(package.Content);
                ServerSideClient destClient = Clients.FirstOrDefault(c => c.Name == screenshot.RecieverName);
                destClient?.SendPackageAsync(package);
                break;

            // Send cursor to all clients. Does not need to be deserialized because
            // the contents of the package do not need to be analyzed.
            case Commands.CursorPosition:
                BroadcastPackageAsync(package);
                break;
            }
        }
Пример #2
0
        protected override void OnPackageReceived(Package package)
        {
            base.OnPackageReceived(package);

            switch ((Commands)package.Command)
            {
            case Commands.InstantMessage:
                Pusher.Push(InstantMessageContent.Deserialize(package.Content));
                break;

            case Commands.Screenshot:
                Pusher.Push(ScreenshotContent.Deserialize(package.Content));
                break;

            case Commands.CursorPosition:
                var args = ClientCursorContent.Deserialize(package.Content);
                var find = clientCursorPositions.FirstOrDefault(c => c.ClientName == args.ClientName);

                if (find == null)
                {
                    clientCursorPositions.Add(args);
                }
                else
                {
                    int index = clientCursorPositions.IndexOf(find);

                    if (index != -1)
                    {
                        clientCursorPositions[index] = args;
                    }
                }
                break;
            }
        }