12 ms·
Hey B-n-c, You are pretty much spot on with everything you mentioned. Apparently app.io had some setup w/ VMs running on lightweight hypervisors (https://macs
by weiyin 12y ago
Hey B-n-c,
You are pretty much spot on with everything you mentioned.
Apparently app.io had some setup w/ VMs running on lightweight hypervisors (https://macstadium.com/casestudies https://macstadium.com/casestudies), but we found we didn't have to have all that overhead to run multiple simulators per machine.
And you're exactly right about the small piece of custom code to pass controls and send frames. We're big fans of socket.io - pretty powerful stuff!
Happy to answer follow-ups if we missed something.
Thanks,
weiyin
- B-n-c 12y agoThe one piece that puzzles me is how the frames are being captured from the iOS simulator. Are you launching multiples per user account, where each one is a different session at a different portion of the screen, and essentially screenshotting each? Or did you modify the simulator somehow and are hooking in to grab the screen, so that way its irrelevant of their position on screen? Thanks!
- weiyin 12y agoWe wrote some custom OS X code to capture frames from individual processes. That way the simulators don't need to be positioned in any way or even visible. Cheers.
- B-n-c 12y agoThe other piece of magic you are doing is sending in the keystrokes / mouse movements. If you're running multiple iOS simulators on a Mac, how are the key presses / mouse movements not interfering with other users?
- weiyin 12y ago(don't see a link to reply under your last comment) yea, so the incoming keystrokes and mouse movements are managed through some custom OS X code as well. the specific method we're using is CGEventPostToPSN, more information here: https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/index.html#//apple_ref/c/func/CGEventPostToPSN https://developer.apple.com/library/mac/documentation/Carbon...
- B-n-c 12y ago(No reply button under your other comment either) Thats a pretty sweet API, never seen that before, thanks! I'm going to play around with it a bit to see what it can do!