WebRTC with Xamarin.Mac irregular connection issues - webrtc

I am trying to develop a WebRTC connection between a client and portal.
The client runs on macOS built using Xamrin.Mac. I know when the connection will fail because the host icecandidate returns 0udp.
Failed connection WebRTC internals
From the image you will see the 0udp.
The connection works maybe 30% of the time but the only indication is 0udp and the fact that within the 0udp the username fragment is different to the offer.
Is there anything I can do to find a more detailed answer?

Related

How to create a stun, turn and signaling server

Is there a simple guide from where I can start creating a stun / turn and signaling server ?
I spend over a week searching for those things and couldn't find any guide where I can say:
okay, I am on the right track now - this is clear.
So far, everything is so abstract without any examples.
This is what I'm trying to achieve: a simple video stream on my local network where I'll have a server with installed usb camera on it, and an application on my iis which will connect to the usb camera and stream it to the clients, and every time when a client opens the application, will see the video stream from the server camera.
Note: since I want to use it on my local network do I really need a stun/turn server, or is there a guide that shows how to avoid it ?
Media streamed over dedicated servers HTTP/HTTPS rarely needs a NAT traversal solution. Instead, just have your web server with camera attached, on the public Internet or behind your NAT with port-forwarding enabled.
There are LOTS of streaming media solutions available as open source, free downloads, or commercially sold. A good list is here:
https://en.wikipedia.org/wiki/List_of_streaming_media_systems

PubNub WebRTC demo working in same network but not over internet (even after established connection)

I was going through this PubNub WebRTC demo. https://kevingleason.me/SimpleRTC/minivid.html
Which works fine within same network (same browser or different devices across same network). But I tried using it over internet, I am able to connect a call but can not see anything but a black screen. This is the source for same tutorial
https://github.com/pubnub/SimpleRTC
I have gone through many such application, such as AndroidRTC
and I face same problem (black screen after connection over internet). I am unable to figure out why, any help is appreciated.
You need some sort of signaling mechanism (PubNub, Firebase, or your own software [nodejs seems the preferred choice these days]) to get the webRTC API communicating P2P on your local network. To get webRTC to work from one network to another you need a STUN server/service. Google provides free stun servers (stun:stun.l.google.com:19302). To get webRTC to traverse strict firewall settings and complicated networks you need a TURN server/service like xirsys.com.
This article covers it all ...
http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/

UDP Hole punching unsuccessful, but tests show it should work (mobile network)

For the past two week I have been unsuccessfully trying to implement udp hole punching, but I'm not sure why. I understand that the algorithm for hole punching is not guaranteed to work, but I believe it should work in my test case because I have noticed that once I bind my socket on my home-network, the port is the same to the outside world as it is locally, and stays that way for all connections made from this socket. Any help after reviewing my trials would be appreciated.
I have three computers, my osx desktop, my iPhone, and my amazon ec2 ami.
on the desktop I've built a cocoa app which uses the GCDAsyncUDPSocket library to bind a port and contact the ec2 server, where a java app using apache's mina library stores the sockets external ip/port and associates it with a username passed in the payload.
the iphone, which is on the AT&T network runs an app which uses the same GCDAsyncUDPSocket library to contact the ec2 server with the same username, which then the ec2 does a lookup for the username, finds the desktops info and informs the desktop of the iphones address and the iphone of the desktops address.
now the iphone & the desktop know about each other they start shooting off packets at each other in hopes to get a punched hole.
in theory this should work, but maybe I am missing something about mobile networks that would make this difficult? But then again running a simple udp echoer on a 4th external computer to manually msg the desktop did not work either, so maybe its my router, but I don't see how that could be as all my tests show that the port the desktop asks for is the same one assigned by the router.
I've been at this for nearly two weeks with little progress and any tips would be appreciated!
"once I bind my socket on my home-network, the port is the same to the outside world as it is locally"
I highly doubt that. To traverse NAT given peers A and B which have sent datagrams to a 3rd party: S you need to send datagrams from A to B and vice versa using their public IPs as seen by S and their port as seen by S (i.e. not the port A, B are bound to from their point of view).

Can you change Windows Mobile Device Centre to use a different network from 192.168.55.0/24 for debugging the compact framework?

I have a piece of software I have written that talks to a web service over it's Wifi connection on a Casio WinCE handheld.
Unfortunately the Wifi network and the network created by WMDC (or ActiveSync) to host the debugger connection clash, they are both 192.168.55.0/24. So I can't have them both connected at the same time.
Does anybody know if you can reconfigure WMDC to use a different address range?
I've hunted through the registry but can't see anything obvious, and Google is not turning up anything useful.
Thanks,
James.
Is the development PC on teh same network as the WiFi connection? If so, I'd abandon ActiveSync/WMDC altogetehr and just use ethernet debugging over the same connection that it's using for the web service calls.

How do you configure a direct serial PPP connection for Connection Manager on Windows Mobile?

We're trying establish a direct serial PPP connection on several Symbol Windows Mobile devices, including MC75, MC9590 running Windows Mobile 6.1 and 6.5. Have used the RAS APIs in the past with some success, but have found that RasHangUp() will hang and never return when the device is removed from its cradle. In response to a case opened by Motorola, Microsoft's response was that RAS deprecated and suggested we try using Connection Manager instead - yeah just that helpful. While the APIs are pretty straight forward, there are no examples I can find on configuring a direct serial connection (or Destination, Microsoft's term). I'm skeptical RAS is deprecated as it still appears in the MSDN documentation with no such indication.
I've examined MSDN http://msdn.microsoft.com/en-us/library/bb737593.aspx, and the XML examples appear to be specific to cellular connections.
I'd appreciate any clue about the best direction to take here, thanks.