Closed truedat101 closed 10 years ago
To accomplish this we have several options:
I believe we can utilize the RTCPeerConnection to do the screen sharing. I need to quickly evaluate how to host the services for STUN and TURN and ICE, if they are needed.
I think we can get away without needing STUN, TURN, and ICE for the purposes of sharing within a local network. I need to verify this. I'll start using the simpl1/screencast demo. It's only on a local connection, so I'll jimmy this to work with any connected peer.
I spent some time looking at PeerJS and SimpleWebRTC. PeerJS looks pretty good. We can definitely use it for file sharing.
We are going to need a secure endpoint serving https. I'll need to generate self signed certs.
Here are some alternative approaches. I may decide it is easier to stick with tab sharing: http://www.html5rocks.com/en/tutorials/streaming/screenshare/
to get the point across. See the above for more details.
I need to come up with something that can be viewed on HTML5 ... I'd prefer not requiring special players and not with enormous network load. Thinking.
Ok, so number 1 choice in the solution here using webrtc is too difficult at the moment for a number of reasons, starting with the set up, and then the web socket security. I need to spend some time reading those specs and review a sensible approach to signaling. I think I can leverage socket.io (which I have in my setup). Todo later.
To quickly get off the ground, there are three options:
1) windows: tightvnc 2) Linux: novnc + x11vnc (this is what openstack uses) 3) guacamole:
See: http://jorgenmodin.net/index_html/archive/2010/11/30/novnc-vnc-screen-sharing-in-the-web-browser
I'm using x11vnc (on linux) + novnc.
A couple things on the setup:
x11vnc MUST have a password, or else you'll be insecure, and remote connection doesn't pass through. Do:
noVNC has some special configuration as well:
Note, the final URL you get is : http://192.168.1.13:6080/vnc.html?host=mintyfresh&port=6080
It will have a hostname supplied. I don't know whether that makes a difference, probably for security, though we aren't running a proper DNS.
So just need to make this a configuration option in the epochedu, to substitute the teacher IP address
Also, will need to script the startup. For a windows-based demo system, I'll need to provide an alternate setup. For now, I'll only be supporting this linux demo system.
This is a new feature, it's not what we thought. #1 is the screen sharing. This one is more like a security camera ... it will cycle through screens of each student's screen.
Above is the feature in a nutshell. Left out is the detail about how the screens rotate. They just switch on the screen between users. Somehow we need to update the text to display which user.
I've completed the base monitor app feature. Need to just add the dialog for setting a timeout.
This is officially done. The GUI took a lot longer than expected to just get the dialog + input going. There is some bizarre quirk I suspect with jqmodal and caching of data in the input fields. Fixed a bug with the handling of "teacher" nick so that a teacher is skipped in the process of doing session monitor (don't monitor yourself). Good news with this approach is the plug doesn't do all the work, it's the browser.
The only thing that was left was cleaning up the sharing and the monitoring dialog. Done.
(the teacher's screen can be displayed in real time for all students (acceptable delay TBD)