up2university / knockplop

Basic meeting webservice (client + server) based on WebRTC technology
MIT License
1 stars 0 forks source link

Browsers #1

Closed andreacorleto closed 6 years ago

andreacorleto commented 6 years ago

screensharing: Janus WebRTC Screensharing extension needed on Chrome browser

Video/audio/chat/screensharing not working on Mozilla Firefox and Microsoft Edge browser

michzimny commented 6 years ago

To me, video/audio/screensharing on Firefox works, but sometimes.

Strange things happen when turning off screensharing on Firefox (e.g. a camera is still on, after closing the browser tab and even the browser; Firefox processes must be killed in windows task manager to stop the camera). If screensharing is not ready then #2.

Chat works properly for me.

misi commented 6 years ago

The issue is that there are discussion on how to implement screensharing. ScreenSharing is also a moving target in implementations.

Anyhow ScreenSharing setup has not been finished during setup. I wrote @michzimny many emails without any real response. :(

michzimny commented 6 years ago

Anyhow ScreenSharing setup has not been finished during setup.

What do you mean by setup? Is it something to be corrected in this instance's configuration?

I wrote @michzimny many emails without any real response. :(

Emails about screensharing? Sorry, I'm afraid I haven't received anything.

misi commented 6 years ago

Sorry may I wrong and I didn't wrote the second email. Now I am not sure that I sent you reminder.. Sorry I thought I sent also reminder about it. May I only wanted to write, but forgot in the hurry.

I find only one email about the topic that was not yet answered.

2018-01-12

Are you a chrome developer? If not I could help on chrome screen share plugin.

This is my plugin

https://chrome.google.com/webstore/detail/knockplop-screensharing/glaipmkfbnnfjblbajlffkekbnebkpgg?utm_source=chrome-app-launcher-info-dialog

Only we need to validate your vc.test.up2university and bind with my plugin..

Let me know..

misi commented 6 years ago

We separated the chrome plugin source here: https://github.com/misi/knockplop-chrome-plugin

Only few changes needed to add inline install https://developer.chrome.com/webstore/inline_installation

andreacorleto commented 6 years ago

Still having problem with Firefox (v. 58.0.2 64 bit). No video/audio of the person sharing the room: https://vc.test.up2university.eu/testgarr

js/dev console output TypeError: asm.js type error: initializer of exported object literal must be name of function webtorrent.min.js:1:202285 onaddstream is deprecated! Use peerConnection.ontrack instead. app.js:552 onaddstream is deprecated! Use peerConnection.ontrack instead. app.js:578 ICE failed, add a TURN server and see about:webrtc for more details (sconosciuto) Evento da tastiera non disponibile in alcuni layout di tastiera: tasto=“r” modificatori=“accel,alt” id=“key_toggleReaderMode” browser.xul Evento da tastiera non disponibile in alcuni layout di tastiera: tasto=“i” modificatori=“accel,alt,shift” id=“key_browserToolbox” browser.xul onaddstream is deprecated! Use peerConnection.ontrack instead. app.js:552 TypeError: participantList[msg.pid].videoDiv is undefined app.js:1415:7 ICE failed, add a TURN server and see about:webrtc for more details (sconosciuto) received chat from HacE2An_0TKbt_8tAAAW app.js:523

misi commented 6 years ago

Thanks.. Please ping me later if I will not give a fixed release in 2 weeks.

misi commented 6 years ago

@michzimny I am confused. What's the actual branch head (from https://github.com/up2university/knockplop) is installed on vc.test.up2university.eu? I know there was a discussion about up2u => master change, but I see that master is still far behind the up2u...

Can you calrify. I run up2u branch on https://lutra.lab.vvc.niif.hu:8443/ and I don't have any issues. Please check it if you could reproduce these issues on it.

michzimny commented 6 years ago

@misi, up2u branch is the default branch of the repository, and that branch is the one continuously deployed to vc.test.up2university.eu. See #4. You pushed to that branch today, resulting an automatic deployment ca. 2 hours ago.

misi commented 6 years ago

I experience different behaviour in case of https://lutra.lab.vvc.niif.hu:8443/aaa and https://vc.test.up2university.eu/aaa I run on lutra the same the up2u branch head.

@michzimny may there is the difference in server-config.js or client-config.js?

Could you share these configs because these are the only part that could be different. Thanks..

misi commented 6 years ago

Again: could you reproduce the issues on https://lutra.lab.vvc.niif.hu:8443 too?

michzimny commented 6 years ago

I will try to reproduce as soon as I have two machines to test, soon.

Configs:

# cat server-config.js
var config = module.exports = {}
var fs = require('fs');

config.httpsConfig = {
    key: fs.readFileSync('/etc/certs/live/vc.test.up2university.eu/privkey.pem'),
    cert: fs.readFileSync('/etc/certs/live/vc.test.up2university.eu/cert.pem'),
    ca: fs.readFileSync('/etc/certs/live/vc.test.up2university.eu/chain.pem')
};
config.HTTP_PORT = 80;
config.HTTPS_PORT = 443;
config.REST_API_KEY = 'ff...............yM';
config.REST_API_URI = 'https://api.turn.geant.org/turn?uri_schema=turn&transport=tcp&ip_ver=ipv4%2Cipv6&servercount=1&api_key='+config.REST_API_KEY;

# cat client-config.js
var peerConnectionConfig = {
    'iceServers': [
        {'urls': 'stun:stun.services.mozilla.com'},
        {'urls': 'stun:stun.l.google.com:19302'},
//        {'username':'turnuser','credential':'turnpassword','urls': 'turn:turnserver_IP:port?transport=tcp'},
//        {'username':'turnuser','credential':'turnpassword','urls': 'turn:turnserver_IP:port?transport=udp'},
    ]
}
misi commented 6 years ago

Try

-config.REST_API_URI = 'https://api.turn.geant.org/turn?uri_schema=turn&transport=tcp&ip_ver=ipv4%2Cipv6&servercount=1&api_key='+config.REST_API_KEY;
+config.REST_API_URI = 'https://api.turn.geant.org/turn?uri_schema=turn&transport=udp%2Ctcp&ip_ver=ipv4%2Cipv6&servercount=1&api_key='+config.REST_API_KEY;
michzimny commented 6 years ago

It helped. See https://github.com/up2university/knockplop/issues/5#issuecomment-369262095

michzimny commented 6 years ago

@misi, is it the solution with 'udp%2Ctcp' the one that we should use?

@andreacorleto, could you please try to reproduce the problems you experienced?

misi commented 6 years ago

@michzimny If firewall not filters out UDP totally it is working solution. I need to test it further...

andreacorleto commented 6 years ago

@michzimny i've tested the same room (https://vc.test.up2university.eu/testgarr) with firefox and it seems to be working (with some minor issues, microphone and video icon not always working properly). Now I'm experiencing an error with Chrome: participant sharing the screen can't be heard no more.

DOMException: Failed to set local answer sdp: Called in wrong state: kStable errorHandler @ app.js:1050 Promise.catch (async) createdDescription @ app.js:638 (anonymous) @ app.js:593 Promise.then (async) receivedDescription @ app.js:593 (anonymous) @ app.js:488 n.emit @ universalModuleDefinition:2 n.onevent @ universalModuleDefinition:3 n.onpacket @ universalModuleDefinition:3 (anonymous) @ universalModuleDefinition:3 n.emit @ universalModuleDefinition:2 n.ondecoded @ universalModuleDefinition:1 (anonymous) @ universalModuleDefinition:3 r.emit @ universalModuleDefinition:1 s.add @ universalModuleDefinition:1 n.ondata @ universalModuleDefinition:1 (anonymous) @ universalModuleDefinition:3 n.emit @ universalModuleDefinition:2 n.onPacket @ universalModuleDefinition:2 (anonymous) @ universalModuleDefinition:2 n.emit @ universalModuleDefinition:2 n.onPacket @ universalModuleDefinition:2 n.onData @ universalModuleDefinition:2 ws.onmessage @ universalModuleDefinition:3 app.js:535 received name from bs0tRgutJU6GP_sdAAAX app.js:487 received sdp from bs0tRgutJU6GP_sdAAAX (2) [{…}, {…}] {type: "offer", sdp: "v=0 ↵o=- 5871060000454492267 36 IN IP4 127.0.0.1 ↵…5341 label:65b0acc7-e839-4c8e-83d8-e2e805e93c89 ↵"} app.js:576 OFFER SDP received from pid: bs0tRgutJU6GP_sdAAAX app.js:635 Setting local ANSWER SDP and sending to bs0tRgutJU6GP_sdAAAX app.js:487 received sdp from bs0tRgutJU6GP_sdAAAX (2) [{…}, {…}] {type: "offer", sdp: "v=0 ↵o=- 5871060000454492267 38 IN IP4 127.0.0.1 ↵…5636 label:3689f278-d8ce-4e5e-a1f3-40b028cbba57 ↵"} app.js:576 OFFER SDP received from pid: bs0tRgutJU6GP_sdAAAX app.js:487 received sdp from bs0tRgutJU6GP_sdAAAX (2) [{…}, {…}] {type: "offer", sdp: "v=0 ↵o=- 5871060000454492267 38 IN IP4 127.0.0.1 ↵…5636 label:3689f278-d8ce-4e5e-a1f3-40b028cbba57 ↵"} app.js:576 OFFER SDP received from pid: bs0tRgutJU6GP_sdAAAX app.js:642 Sending SDP to bs0tRgutJU6GP_sdAAAX app.js:652 sending message: {sdp: RTCSessionDescription, pid: "bs0tRgutJU6GP_sdAAAX"} 2app.js:635 Setting local ANSWER SDP and sending to bs0tRgutJU6GP_sdAAAX app.js:642 Sending SDP to bs0tRgutJU6GP_sdAAAX app.js:652 sending message: {sdp: RTCSessionDescription, pid: "bs0tRgutJU6GP_sdAAAX"}

Sorry, I'm not a lucky man :-)

misi commented 6 years ago

@andreacorleto The mute effect was due replacetrack() function was unfortunately not yet implemented in chrome. I will check if in the latest chrome it is working or not and still need to wait fro the implementataion.. I have read that it is there now, but still not fully functional. So need to check.

@all I forgot to mention that Screensharing is under standardization/implementation. https://w3c.github.io/mediacapture-screen-share That is totally different what we use today.

I just want to point it out that I do my best to follow it as close as possible and do the right user experience, but it is not easy.

misi commented 6 years ago

I have just pushed few commits, after the test docker updates itself please retest it and let me know your experiences Thx.

andreacorleto commented 6 years ago

Tested with Firefox and Chrome today and everything it's ok (screensharing too). Thanks

misi commented 6 years ago

File sharing works only between 2 chrome only. You could also test. If you drag&drop a file to the video elements then the others in the room will receive it. (through webtorrent. Be aware that it use public tracker!) After download finished You will find file if you scroll to the end of the page on left bottom corner. It is not yet finished feature but it is there..