Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

netwerk onderscheiden in de browser

Pagina: 1
Acties:

  • divvid
  • Registratie: Februari 2006
  • Laatst online: 18-11 12:30
Ik ben met een projectje bezig dat een videostream of snapshots van de videostream naar een web client stuurt. Het is de bedoeling dat als de gebruiker met zijn computer of mobiel op het lokale netwerk zit de videostream te zien is en als hij niet op het lokale netwerk zit de snapshots getoont worden.

Hoe zou je makkelijk kunnen detecteren in javascript op welk netwerk de gebruiker zit (rekening houdend met NAT etc?

Wat ik heb geprobeerd?
via http://api.hostip.info/get_json.php en aanverwanten krijg ik het IP adres zoals mijn server mijn externe IP adres ziet, maar dan weet ik nog niet of ik op het lokale netwerk zit of niet.

Hoe zou ik dit het beste aan kunnen pakken (ik heb volledige controle over zowel de server die de video stream genereert als de webserver)

setup:

video op netwerk a.b.c.d, snapshots worden gepushed naar --> webserver draait op e.f.g.h (extern bij hoster)
client connect met webserver op e.f.g.h
als client op netwerk a.b.c.d dan video stream
als client op extern netwerk i.j.k.l dan snapshots om de zoveel seconden

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
Heeft het "lokale netwerk" één vast extern IP-adres? Of een aantal?

Zo ja, dan kun je natuurlijk checken de client (een van) dat ip-adres voert, dan toon je de stream en anders het snapshot.


Je geeft zelf het antwoord al:
als client op netwerk a.b.c.d dan video stream
als client op extern netwerk i.j.k.l dan snapshots om de zoveel seconden
M.a.w. (pseudo-code):
code:
1
2
if(client.ip==a.b.c.d) videostream;
else snapshots;

[ Voor 11% gewijzigd door HyperioN op 21-11-2014 13:06 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49

Bosmonster

*zucht*

Lijkt me wel dat je dit op de server wilt bepalen, niet via javascript op de client (waar je mogelijkheden ook behoorlijk beperkt zijn in dat opzicht).

  • Razr
  • Registratie: September 2005
  • Niet online
Kun je niet gewoon met een GET/POST een 'ping' doen naar de video web-server en als deze binnen 'x' seconden (?) faalt de snapshots tonen? Dan hoef je helemaal niets met netwerken te coderen/checken.

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
Razr schreef op vrijdag 21 november 2014 @ 13:07:
Kun je niet gewoon met een GET/POST een 'ping' doen naar de video web-server en als deze binnen 'x' seconden (?) faalt de snapshots tonen? Dan hoef je helemaal niets met netwerken te coderen/checken.
Ik verwacht dat ze een beperkte upload hebben op een standaard consumenten- of zakelijk internetlijntje vanuit een kantoorlocatie. (Dus geen 1 Gbit/s uplink vanuit een datacenter of iets dergelijks).

Als je dan wil gaan streamen naar een tiental clients buiten je eigen netwerk, heb je al snel uplinkcapaciteit tekort en slibt alles dicht.

  • Razr
  • Registratie: September 2005
  • Niet online
Goed punt inderdaad, dan zou ik alsnog de vraag bij de video-webserver neer leggen. Implementeer iets als een
code:
1
GET http://www.videoserver.com/api/same-network
o.i.d. waarbij je op de client vervolgens de vervolgstap kunt bepalen a.d.h.v. het antwoord.

'same-network' is misschien niet helemaal juist gekozen, maar je snapt het idee

[ Voor 15% gewijzigd door Razr op 21-11-2014 13:17 ]


  • divvid
  • Registratie: Februari 2006
  • Laatst online: 18-11 12:30
Dank jullie wel voor de ideeen, @HyperioN, gaat niet werken als de client op een lokaal geNAT subnetwerk zit (b.v. 192.168.1.10 op kantoor) en de video server staat thuis op...192.168.1.2 o.i.d. Beiden zelfde IP range, maar echt niet op hetzelfde netwerk.
Wat we nu doen is het externe IP adres van de video stream vergelijken met het externe ip adres van de ingelogde browser client. Zijn die gelijk dan veronderstellen we dat ze op hetzelfde adres zitten, maar waterdicht is dat allerminst en zeker nog niet doorgetest.

  • Umbrah
  • Registratie: Mei 2006
  • Laatst online: 23:24

Umbrah

The Incredible MapMan

Nee dat is verre van waterdicht, zeker gezien er altijd technieken staan zoals zelfs basisdingen á la Fiddler2 waar je requests eenvoudig mee kan veranderen...

Kort door de bocht: server/service-laag zul je dit moeten aanpakken, of named users/sessies moeten gebruiken. In IIS kan je met de ARR vrij eenvoudig dit bewerkstelligen.
Pagina: 1