Ik ben van plan om een social media website te bouwen (als een project voor school). Ik heb al een databasemodel gemaakt die redelijk ingewikkeld is, hierdoor kan ik niet een tool als MongoDB gebruiken. Voor deze website moet het mogelijk zijn om berichten naar elkaar te sturen en een notificatie te onvangen. Ik heb een beetje onderzoek gedaan en heb gekeken naar:

-Node.js + Socket.io
-Meteor
-Ratchet (PHP websocket library)
-Websockets (script dat gebruikt maakt van PHP websockets, een class)
-Pusher

Welke van deze zouden jullie aanbevelen? Ik heb een stuk of 5 relationele tabellen, dus gebruik maken van iets als Mongo of Moose is (volgens mij) niet mogelijk.

Feitelijk gezien heb ik dus een verbinding nodig die de hele tijd openstaat en zoekt naar updates. Als deze update gevonden is krijgt de gebruiker een notificatie en kan hij het bericht lezen. Ratchet vond ik een beetje omslachtig werken voor wat ik wilde. Node.js en Socket.io maken veel gebruik van MongoDB. Pusher app kost geld, en niet zo'n beetje ook.
Waarom niet met Ajax elke 2 seconden laten kijken of er updates zijn, en dan binnenhalen?
Zo doet Twitter (en 9Gag etc) dat ook in hun mobiele apps. Daar vliegen de berichten ook niet continue binnen, maar om de paar seconden (want soms 1, soms 5 berichten, niet 1 voor 1).

Als je echt heel snel je bericht moet zien (in minder dan 1 seconde na posten), dan pas lijkt mij pushen nodig.
Leuk als je verkeersdata oid gaat meten, maar dan komt de informatie van sensoren en niet van mensen (wat berichten wel doen).

Ik ken alleen node.js en socket.io en heb eigenlijk te weinig ervaring met beide om deze af te keuren voor je gebruik. Het zou er waarschijnlijk prima mee gaan.
Het probleem als je dat doet is dat je dan net zo goed de pagina kan verversen. Als er 50 mensen online zijn die je applicatie hebben openstaan en je stuur een AJAX request om de 30 secondes, dan kan dit nogal zwaar zijn voor de server. Daarom werk ik liever met iets van websockets (weet nog niet welke technologie ik wil gaan gebruiken hiervoor)...Iets van een verbinding die de hele tijd openstaat en een melding krijg als er iets nieuws is.

Niemand die ervaring heeft met Node.js en de Mysql extension? Ik wil iets van een notificatie systeem maken zonder om de zoveel tijd te moeten kijken met AJAX.

Bedankt voor je reactie, Eddy.
50 requests elke 30 seconden moet peanuts zijn voor je server...
Precies.
Een beetje website heeft zo'n 500 requests per seconde...
Elk bestandje is een request.
Open http://www.zunflappie.nl/artikel/166/530-onderdelen-catalogus-#3--touring eens... dat waren 73 request. In 1 seconde. Dat is 1 gebruiker.


Nu heb ik regelmatig 40 bezoekers. Die bekijken 20 van zulke pagina's, meestal binnen 3 minuten.
(40 x 73 x 20) / (3*60)= ... 324 requests per seconde.
Wat is het probleem? Geen!


Wel veel caching uiteraard.
Oh, ik dacht dat het de server hevig onder stress zou zetten. Toch is het heel handiger als je een request hebt openstaan tot de user weg is, of niet?
Ik zou zeggen begin met een stresstest te bouwen (of gebruik bestaande benchmarktools) om te testen wat je server aankan en beslis op basis van je bevindingen. Maak het jezelf niet te lastig , een server kan best een stootje hebben.
Mark Markson op 08/06/2015 22:28:52

Oh, ik dacht dat het de server hevig onder stress zou zetten. Toch is het heel handiger als je een request hebt openstaan tot de user weg is, of niet?


Als iets niet per see real time moet zoals bijvoorbeeld een grote chat app zoals omegle of chatroulette dan zou ik fijn kleine ajax requests doen.

Reageren