simplewebrtc / signalmaster

simple socket.io server for webrtc signaling
Other
1.31k stars 486 forks source link

Signalmaster Not Returning Turn Server Responses #56

Open daryl3 opened 8 years ago

daryl3 commented 8 years ago

Hello everyone,

I am using the SimpleWebRTC project with Signalmaster and Restund for my turn server.

I am experiencing a problem when using a Android/Apple device. The local video displays, but the remote video is just a black box and the device eventually says: "Connection Failed Talky could not establish a connection to a participant in this chat. Please try again later."

The SimpleWebRTC demo page says that the error is because a TURN server is required: https://simplewebrtc.com/demo.html "If you see black videos from peers or the connection state displayed ontop of those videos either hangs in Connecting to peer... or changes to Connection failed, a direct peer-to-peer connection could not be established. This typically means that a TURN server is required."

I have disabled the password on my Turn server, because I could not figure out how to pass the username "restund" in the signalmaster config. I'm guessing it is something like ("username": "restund").

I tested the restund server by going to: https://plugin.temasys.com.sg/demo/samples/web/content/peerconnection/trickle-ice/index.html

I added: turn:myipaddress:8080

The "Gather candidates" brought back a bunch of information. I'm not sure if it is all correct, but there was a bunch. Let me know if you want it pasted here. So I believe that meant it was working correctly.

Here is what I have in my Signalmaster configuration file: "turnservers" : [ { "url": "turn:myipaddress:8080", //"username": "restund", //"secret": "secretpassword", "secret": "", "expiry": 86400 } ] So it seems to me that the Signalmaster server is not returning the TURN server responses to the SimpleWebRTC project and I was hoping for some help. Anyone have some input?

Thank you,

Daryl

daryl3 commented 8 years ago

I found the solution: "turnservers" : [ { "url": "turn:myipaddress:3478?transport=udp", "username": "restund", "secret": "secretpassword", "expiry": 86400 } ]

Apparently the port 8080 was only for http. So now I have it working!

daryl3 commented 8 years ago

I've been doing testing and it appears that this problem is still happening on some Apple devices, when WIFI is disabled and Cell Phone Data is being used.

Iphone 6+ on T-Mobile works. (Model: MGC52LL/A) Iphone 6s on T-Mobile works. Iphone 6+ on Sprint fails. (Model: MGD42LL/A) Iphone 6s on AT&T fails. Iphone 6 on AT&T fails.

I am uncertain if the issue has anything to do with the phone carrier. However, I noted the carriers in my results.

Every Android I have tested has worked with both WIFI and Cell Data. I have successfully tested Androids with Sprint, Verizon and AT&T Cell Data. This is why I am uncertain if the issue is related to the phone carrier.

I tried nearly identical Iphone 6+ models. One working on T-Mobile and one not working on Sprint. There is a slight difference in the model numbers, I've included those above.

For the two Iphone 6+ models I went through every phone setting and made sure they had identical settings but that did not resolve the issue.

If I enable WIFI on the Iphone 6+ Sprint phone, the test works. It only fails when trying it is using Cell Data Only.

Thank you in advance for any input you provide. I do appreciate it.

Daryl

fippo commented 8 years ago

check if relay candidates are exchanged between the clients. if not, the turn server is not working

daryl3 commented 8 years ago

@fippo Thank you for your suggestion.

How would you recommend I check to see if they are exchanging candidates?

I looked at the Signalmaster log in both the working and failed tests, and I see messages about "payload" with "candidate" listed.

I also am getting candidates when I use the test at: http://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

I have not been able to locate where the logs are being done on the restund server.

Note: I have verified that the working Iphone 6+ running on Cell Data only requires the Restund/Turn server to be working.

Thank you,

Daryl

daryl3 commented 8 years ago

Is it possible that even though the restund server is working for one Iphone 6+ that it is not working for another?

PraxisCreativa commented 8 years ago

@daryl3 I'm having this problem. but I do not get how to implement this solution in my centos server, could you please give me more information on how to install the STUN / TURN as you did step by step. I would greatly appreciate it. thanks

jonasmedeiros commented 8 years ago

Hi @daryl3 Try to use xirsys turn server, for me worked.

Are you connecting signalmaster with your Android Native app, do you have any code library to indicate.