[php] meerdere sessies/clients live update

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Jboy1991
  • Registratie: September 2012
  • Laatst online: 06-10 10:41
Goedendag mensen,

Voor een leuk projectje ben ik bezig met hoe ik het beste meerdere clients tegelijk een update laat zien.

De bedoeling is dus als volgt.
Stel er zijn 3 teams. Nu wil ik dat wanneer team 1 aan de beurt is team 2 en 3 te zien krijgen “team 1 is aan de beurt. Dit zijn hun woorden”. Als team 1 klaar is schakelt die automatisch over en dan moet team 1 en 3 deze view-beeld te krijgen

Ik twijfel allleen hoe ik dit het beste kan doen het kan via sockets dat ik in Vb.net een server programmeer die dit afhandelt (meer werk plus een extra server programmeren)

Het kan via Ajax long polling (enige nadeel is dat ik veel kritiek las dat het killing kan zijn voor je server als je veel hits/bezoekers krijgt)

En dan is het nog het zelfde idee als long polling maar dan elke seconde de database checken op updates

Nu dacht ik zelf dat sockets het beste is voor dit maar hetkan zijn dat er natuurlijk andere mogelijkheden zijn

Qua sockets dat ik het als volgende te doen:
Via de site header een Ajax page oproep laten doen naar een php file.
Deze php file ontvangt sockets commando’s en zo kan Ajax reallife direct actie ondernemen

De reden dat ik aan deze manier dacht is omdat het via script(bron)niet de commando’s uit te lezen zijn en ip dus redelijk anoniem zijn. En je kan het encrypten

Of zie ik misschien “gevaren”over het hoofd.

Het gaat er dus enkel om dat elk team een eigen apparaat(smartphone) heeft in 1 game en dat dit moet syncen

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jboy1991 schreef op donderdag 19 april 2018 @ 23:25:
dat ik in Vb.net een server programmeer
[php] meerdere sessies/clients live update
Hebben we 't nou over VB.Net of PHP (wijst naar topictitel...) :?

Als het VB.Net betreft: SignalR
Jboy1991 schreef op donderdag 19 april 2018 @ 23:25:
...dat het killing kan zijn voor je server als je veel hits/bezoekers krijgt...
Dat zijn alle methodes mits "genoeg" bezoekers om die methode te nekken. Je wil in ieder geval horizontaal kunnen schalen als je het over serieuze bezoekersaantallen hebt. Heb je 't over het lokale punnikclubje met "wel 25 hele bezoekers" dan is 't een ander verhaal en volstaat zowat elke houwtje-touwtje methode wel. Dus: heb je een schatting van 't aantal bezoekers dat je kunt verwachten (iets realistisch i.p.v. "4 miljoen" uit je duim te zuigen)?

[ Voor 65% gewijzigd door RobIII op 20-04-2018 00:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Jboy1991
  • Registratie: September 2012
  • Laatst online: 06-10 10:41
RobIII schreef op donderdag 19 april 2018 @ 23:56:
[...]


[...]

Hebben we 't nou over VB.Net of PHP (wijst naar topictitel...) :?

Als het VB.Net betreft: SignalR


[...]
Ik heb het over beide. De webpage is in php en dacht de socketserver in vn.net ten schrijven.
Dat zijn alle methodes mits "genoeg" bezoekers om die methode te nekken. Je wil in ieder geval horizontaal kunnen schalen als je het over serieuze bezoekersaantallen hebt. Heb je 't over het lokale punnikclubje met "wel 25 hele bezoekers" dan is 't een ander verhaal en volstaat zowat elke houwtje-touwtje methode wel. Dus: heb je een schatting van 't aantal bezoekers dat je kunt verwachten (iets realistisch i.p.v. "4 miljoen" uit je duim te zuigen)?
Ik heb totaal geen idee qua bezoekersaantallen. Dus schatten is moeilijk. Ik gok op 100

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dan kies iets en ga aan de slag. Bij die aantallen boeit het vrij weinig wat je doet. Zorg eerst maar eens dat je iets hebt voor je gebruikers en wordt het populair dan kun je nog altijd een v2 maken.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Jboy1991
  • Registratie: September 2012
  • Laatst online: 06-10 10:41
RobIII schreef op vrijdag 20 april 2018 @ 09:15:
Dan kies iets en ga aan de slag. Bij die aantallen boeit het vrij weinig wat je doet. Zorg eerst maar eens dat je iets hebt voor je gebruikers en wordt het populair dan kun je nog altijd een v2 maken.
Beetje apart antwoord. Ik vraag hier om advies en wat precies de nadelen kan zijn buiten wat ik zelf al aan gaf. Enof er betere manier zijn dan bijv sockets.

En dat “iets” heb ik al dat ik dus nu uit wil breiden.

Acties:
  • +1 Henk 'm!

  • Khallouki
  • Registratie: Oktober 2006
  • Laatst online: 06-10 20:32
Waarom perse een vb.net voor de websocket server? Je kunt makkelijk een php websocket server opzetten: http://socketo.me/ Heb ik ook gedaan.

Je handelt de events af met autobahn.js https://github.com/crossbario/autobahn-js. Dat is gewoon plain javascript in je php applicatie.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Hoezo apart antwoord :? Ik zeg je dat bij 100 bezoekers de aantallen niet spannend genoeg zijn om er lang over te twijfelen wat je moet doen; kies een willekeurige methode die je al gevonden had/hebt en ga er mee aan de slag. Als je straks een paar duizend, tienduizend (gelijktijdige ook nog eens!) bezoekers hebt dan wordt 't een ander verhaal en kun je er nog wat extra energie in steken, maar een beetje webserver trekt 100 bezoekers met long-polling of whatever je ook kiest met 2 vingers in de neus.

Maar goed; ik heb je óók een goeie suggestie gegeven als je het niet erg vindt even met wat nieuws aan de slag te gaan (leercurve is laag, dus da's makkelijk te doen) en dat schaalt ook behoorlijk leuk. Er zijn letterlijk 10.000 alternatieven; als je daar blijer van wordt: kies die. Je vraag is "Ik twijfel allleen hoe ik dit het beste kan doen het kan via..." en ik zeg je dat 't bij dit soort aantallen vrij oninteressant is wat je kiest dus dan zou ik gaan voor iets waarmee je 't snelst (en meest comfortabel (omdat je ermee bekend bent bijvoorbeeld)) aan de slag kunt om iets te maken.

[ Voor 34% gewijzigd door RobIII op 20-04-2018 10:25 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Hopscotch
  • Registratie: September 2015
  • Laatst online: 28-09-2021
Je kunt ook met server sent events werken: https://www.html5rocks.com/en/tutorials/eventsource/basics/
Zijn wel php libraries voor te vinden.

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 16:23
Via de site header een Ajax page oproep laten doen naar een php file.
Deze php file ontvangt sockets commando’s en zo kan Ajax reallife direct actie ondernemen
Wat? 8)7
Sorry maar je brij van termen is echt geen touw aan vast te knopen.
Maar als je toch met vb.net aan de gang gaat signalr inderdaad. Voor php zijn vast vergelijkbare libraries. Maar ik zie niet echt een reden om zowel vb.net als php te gebruiken. Kies er één (dat is wat robdll bedoelt denk ik)

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • Jboy1991
  • Registratie: September 2012
  • Laatst online: 06-10 10:41
sig69 schreef op vrijdag 20 april 2018 @ 23:26:
[...]

Wat? 8)7
Sorry maar je brij van termen is echt geen touw aan vast te knopen.
Maar als je toch met vb.net aan de gang gaat signalr inderdaad. Voor php zijn vast vergelijkbare libraries. Maar ik zie niet echt een reden om zowel vb.net als php te gebruiken. Kies er één (dat is wat robdll bedoelt denk ik)
Ah sorry voor mijn wartaal.

Ik wil de website laten hosten bij een hostingprovider (dus nieten eigen server) hierdoor ben ik dus al beperkt in vele mogelijkheden

De reden dat ik vn.ne erbij haal is dat ik dacht dat er altijd een server die de opdrachten ontvangt, online moet zijn. En ik ervanuit ga dat wanneer je dit in php wilt maken je altijd het script open moet hebben omdat het anders niet uitgevoerd word. (Of ik moet ernaast zitten€

[ Voor 10% gewijzigd door Jboy1991 op 20-04-2018 23:49 ]


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 11:34
Zelf sockets opzetten is niet zo super simpel, zeker als je geen eigen (virtual) server hebt. Je kan ook kijken naar Pusher, dat is een service die websockets voor jou regelt en is gratis tot 100 connecties tegelijk. Kan je via PHP makkelijk aansturen. https://pusher.com/pricing

Ajax elke seconde pollen kan, maar is niet erg efficient als je gaat groeien en niet zo snel als websockets.

Acties:
  • 0 Henk 'm!

  • Pindagus
  • Registratie: September 2014
  • Laatst online: 28-08 12:48
Is PHP een must? Kijk anders eens naar Firebase: https://firebase.google.com/

YouTube: Introducing Firebase Realtime Database

Hiermee zou je een JavaScript webapp kunnen maken met realtime updates, zonder dat je zelf een websocket server hoeft te hosten. Enige nadeel is dat de gratis versie gelimiteerd is tot 100 gelijktijdige connecties.

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Jboy1991 schreef op vrijdag 20 april 2018 @ 23:47:
Ik wil de website laten hosten bij een hostingprovider (dus nieten eigen server) hierdoor ben ik dus al beperkt in vele mogelijkheden
Nee, hoor.
De vraag is wat de hostingprovider ondersteund en hoe je het gaat oplossen.

Je kan prima in PHP een socket schrijven. Je enige limiet (op wat voor server dan ook) is het aantal open connecties. In de basis theorie is dit 65.535 maar kan d.m.v. verschillende instellingen (dedicated server) rustig oplopen tot 300.000+.

Zo heb ik in JavaScript een interval timer lopen op de XMLHTTPRequest stream.
Zie: function handleStream() in https://bitbucket.org/djm...eviewer=file-view-default
Deze splitst de binnenkomende data op regel eindes (\n) en stuurt elke regel naar de 'onresponseline' functie.
In PHP heb ik een script zonder timeout draaien die een echo "{data}\n" doet bij elk bericht dat je naar de client wil sturen.
Je kan ook gewoon afvangen dat als de hostingprovider na 30 seconden het PHP script alsnog afbreekt dat ie opnieuw een verbinding maakt.

Oftewel, je hebt dan een "dirty" socket simulatie die werkt. Er is dus geen "beperking", je kan het beter "uitdaging" noemen.

Maak je niet druk, dat doet de compressor maar

Pagina: 1