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; } }
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; } }