GMOT
Nieuws:
 
*
Welkom, Gast. Alsjeblieft inloggen of registreren. 17 Juni 2019, 23:09:07


Login met gebruikersnaam, wachtwoord en sessielengte


Pagina's: [1] 2 3 4
  Print  
Advertenties


chiel99
Just the few of us
*****

Berichten: 917


Bekijk profiel WWW
« Gepost op: 22 Oktober 2015, 12:04:51 »

Hey GMOT,

Ik ben al een tijdje het internet aan het afzoeken, en heb al veel gevonden over Node.js.
Ik ben nu dus van plan om een chat systeem te bouwen, mensen moeten 1 op 1 met elkaar kunnen chatten. Normaal zou ik zoiets bouwen met Ajax en gewoon elke 2 seconden kijken of er een nieuw bericht is, zoja het bericht ophalen.

Echter wil ik bij deze nieuwe applicatie die ik nu bouw rekening houden met heel veel gebruikers, en het dus zo efficiŽnt mogelijk doen.

Daarom dacht ik er dus aan om voor het prive-chat gedeelte Node.JS te gaan gebruiken i.c.m. Socket.io. Maar nu mijn vraag, kan ik dit combineren met mijn PHP-applicatie (login-systeem).

En heeft iemand ergens een tutorial gezien waar ze laten zien hoe je een 1 op 1 chat bouwt, of iets wat daar in de buurt komt. Want ik heb tot nu toe alleen nog maar chatrooms gezien waar iedereen in kan, en waar iedereen in kan praten. Ik zou nu wel een chat kunnen bouwen, alleen weet ik niet hoe ik er voor zorg dat er privť chat rooms komen.

Misschien sla ik de plank wel helemaal mis en moet ik gewoon met PHP en ťťn of andere library gebruiken. Dan hoor ik dat ook graag : ).

Thanks alvast !
Gelogd

kaas1
Infinity
*********

Berichten: 19.940


LeesMij.txt


Bekijk profiel
« Antwoord #1 Gepost op: 22 Oktober 2015, 12:15:29 »

Normaal zou ik zoiets bouwen met Ajax en gewoon elke 2 seconden kijken of er een nieuw bericht is, zoja het bericht ophalen.
Je zou dit kunnen doen, en als uitbreiding bij elk bericht de verzender en ontvanger meesturen. Als Arie een privechatvenster voor Bert opent, stuurt Arie "[arie>bert] Hallooooo" naar de server, en voor Bert kijk je elke 2 seconde of er een nieuw bericht is, dat als ontvanger "Bert" heeft.
Gelogd


MBeentjes
Pretty addicted
*******

Berichten: 3.611


Bekijk profiel
« Antwoord #2 Gepost op: 22 Oktober 2015, 12:29:11 »

Als je een vorm van authenticatie wil implementeren in je NodeJS applicatie, kun je ook gebruik maken van PassportJS (npm link). Het biedt op gemakkelijke wijze de mogelijkhed tot implementatie van authenticatiemogelijk op basis van bijvoorbeeld Facebook of Twitter.
« Laatste verandering: 22 Oktober 2015, 12:46:10 door MBeentjes » Gelogd

chiel99
Just the few of us
*****

Berichten: 917


Bekijk profiel WWW
« Antwoord #3 Gepost op: 22 Oktober 2015, 13:00:13 »

Je zou dit kunnen doen, en als uitbreiding bij elk bericht de verzender en ontvanger meesturen. Als Arie een privechatvenster voor Bert opent, stuurt Arie "[arie>bert] Hallooooo" naar de server, en voor Bert kijk je elke 2 seconde of er een nieuw bericht is, dat als ontvanger "Bert" heeft.

Ja ik snap wel hoe ik het moet doen wanneer ik PHP+Ajax gebruik. Maar is dit wel een goede oplossing. Want als iemand 50 chat vensters open heeft staan, en er 500 mensen online zijn, dan zijn dat 25.000 requests elke 2 seconden. Dat is niet echt efficiŽnt..

Of kan het niet efficiŽnter, ook niet met Node.JS of een PHP library?

Als je een vorm van authenticatie wil implementeren in je NodeJS applicatie, kun je ook gebruik maken van PassportJS (npm link). Het biedt op gemakkelijke wijze de mogelijkhed tot implementatie van authenticatiemogelijk op basis van bijvoorbeeld Facebook of Twitter.

Thanks, maar ik bouw zelf de authenticatie in PHP ;-). Ziet er wel leuk uit though.
Gelogd

Maarten
Approaching infinity
********

Berichten: 8.274



Bekijk profiel
« Antwoord #4 Gepost op: 22 Oktober 2015, 13:51:25 »

Toen ik dit deed stopte ik alle sockets in de juiste room (socket.join(room)) en bij het verzenden van berichten sturen van een bericht stuur je het naar alle sockets in die room (io.in(room).emit(...)). Geen idee of dat de beste manier is, maar het werkt wel Smiley

Kan je authenticatie niet beter in Node.JS houden? Dat lijkt me makkelijker om te gebruiken met de server.
Gelogd

chiel99
Just the few of us
*****

Berichten: 917


Bekijk profiel WWW
« Antwoord #5 Gepost op: 22 Oktober 2015, 14:11:32 »

Punt is dat ik nog nooit met Node.JS heb gewerkt. Maar ik kan dus beter het complete systeem
(registratie, login, chat), in Node.JS maken (en bijbehorende shit). Dus PHP totaal niet gebruiken.

Kun je Node.JS ook gewoon met een MySql database laten communiceren? En is dat ook efficiŽnter dan met PHP?
Gelogd

kaas1
Infinity
*********

Berichten: 19.940


LeesMij.txt


Bekijk profiel
« Antwoord #6 Gepost op: 22 Oktober 2015, 14:21:15 »

Ja ik snap wel hoe ik het moet doen wanneer ik PHP+Ajax gebruik. Maar is dit wel een goede oplossing. Want als iemand 50 chat vensters open heeft staan, en er 500 mensen online zijn, dan zijn dat 25.000 requests elke 2 seconden. Dat is niet echt efficiënt..
Ik zou me daar pas zorgen om gaan maken als je daadwerkelijk zulke traffic hebt Tongue

Wat dacht je van comet? Hoef je niet elke 2 sec te pollen iig. Voor comet chat zijn aardig wat tuts en het is vrij simpel.
Gelogd


chiel99
Just the few of us
*****

Berichten: 917


Bekijk profiel WWW
« Antwoord #7 Gepost op: 22 Oktober 2015, 14:27:05 »

Het is een hobby-project. Die aantallen zou het ook nooit krijgen.
Maar het gaat om het idee. Dat ik van die Ajax-methode af kom :p.

Wat dacht je van http://socketo.me/
Comet is een soort van vergelijkbaar met dat?
Gelogd

MBeentjes
Pretty addicted
*******

Berichten: 3.611


Bekijk profiel
« Antwoord #8 Gepost op: 22 Oktober 2015, 14:51:12 »

Ik zie er ook niet echt het nut in om authenticatie in PHP te laten, dan moet je een tunnel bouwen naar NodeJS en die moet dus dan ook veilig zijn. Kan je beteer alles netjes in NodeJS doen.
Gelogd

chiel99
Just the few of us
*****

Berichten: 917


Bekijk profiel WWW
« Antwoord #9 Gepost op: 22 Oktober 2015, 15:06:58 »

Nee klopt, das waar.
Denk toch dat ik het alsnog met PHP doe, en geen Node.JS gebruik maar Ratchet.
Gelogd

RobbertC5
Pretty addicted
*******

Berichten: 3.715


Your true wealth is your time and freedom.


Bekijk profiel WWW
« Antwoord #10 Gepost op: 22 Oktober 2015, 15:22:55 »

Het is perfect mogelijk om PHP te combineren met Node.JS. Wanneer je gebruikers via PHP zijn ingelogd geef je dat aan in de MySQL server en genereer je bijvoorbeeld een sessie-key waarmee de client zich kan authenticeren in het Node.JS-gedeelte. Merk op dat de pagina's waarin je socket.io gebruikt helemaal niet door de Node.JS-server moeten geserveerd worden.

Daarbij denk ik dat je wat moeite hebt met het privť-gedeelte omdat je vast zit met de rooms die ingebouwd zitten in socket.io. Op TCP-nivieau bestaat er niet zoiets als een broadcast, dus zelf de socket in een for-loop naar alle gebruikers sturen is volgens mij even efficiŽnt. (Ik gebruik zelf nooit de ingebouwde rooms.) Wanneer je die omvorming kunt maken zou het geen probleem meer mogen zijn om de for-loop te vervangen door ťťn persoon voor wie het bericht bestemd is.
Gelogd

Om een poll aan te maken voor je html website of dit forum ga je naar online gratis poll maken. /steeltgoechelpeezjrenkvanzjiemot

chiel99
Just the few of us
*****

Berichten: 917


Bekijk profiel WWW
« Antwoord #11 Gepost op: 22 Oktober 2015, 15:27:35 »

Als ik met de PHP WebSockets werk kan ik gewoon een message versturen naar de server, met daarin de afzender, ontvanger en bericht. Dit bericht wordt vervolgens alleen doorgestuurd naar de persoon waarvoor die bedoeld is. Dat is toch mogelijk?

https://github.com/muuknl/phprealtimechat/blob/master/bin/src/Chat.php
Als je vervolgens bij de onMessage method niet naar alle clients de message stuurt maar alleen naar de goede client?
Gelogd

jeftaDotEU
So far, so good
***

Berichten: 115

Kiekeboe


Bekijk profiel
« Antwoord #12 Gepost op: 22 Oktober 2015, 17:24:14 »

Ik heb een tijdje geleden iets vergelijkbaars gedaan en gebruikte toen memcache. Ik weet niet of dat de meest efficiŽnte oplossing is maar misschien is het het waard om even naar te kijken.
Gelogd


Sunnywout
Infinity
*********

Berichten: 17.710


speel mijn game


Bekijk profiel WWW
« Antwoord #13 Gepost op: 22 Oktober 2015, 17:45:33 »

Ik heb een tijdje geleden iets vergelijkbaars gedaan en gebruikte toen memcache. Ik weet niet of dat de meest efficiŽnte oplossing is maar misschien is het het waard om even naar te kijken.
Nee. Memcache heeft bijna niets hiermee te maken.
Gelogd

shitposting is a lifestyle, not a disease

jeftaDotEU
So far, so good
***

Berichten: 115

Kiekeboe


Bekijk profiel
« Antwoord #14 Gepost op: 22 Oktober 2015, 18:34:34 »

Nee. Memcache heeft bijna niets hiermee te maken.

Nou wat ik deed was inloggen enzo met php, en vervolgens de sessie door middel van memcache delen met node. Of iets vergelijkbaars in ieder geval, het is al een tijdje geleden.

Maar,
Citaat van: mij
Ik weet niet of dat de meest efficiŽnte oplossing is
Gelogd



Advertenties
Pagina's: [1] 2 3 4
  Print  

 
Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines | Smartphoneversie bekijken

Dilber MC Theme by HarzeM