user1853777
user1853777

Reputation: 767

NodeJS with PHP application and user session

I have a PHP application (with Symfony2) and I need to let my users talk, and other tings, in real time (with socket.IO). Let's focus on the chat mechanism : A logged user can talk with an other logged user (logged with FOSUserBundle in Symfony). When the user sent a message, it must be saved in MySQL and sent in real time to the other user. So the message is linked to two users (a sender and a receiver) in my MySQL database.

So I have two possibilities :

I don't know what is the cleanest solution, if someone can help me. Thanks !

Upvotes: 13

Views: 11636

Answers (1)

Madhur
Madhur

Reputation: 2219

Can be done using a common data store like redis to store user sessions

Check this link for reference

http://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/

Also check

http://www.slideshare.net/leeboynton/integrating-nodejs-with-php-march-2013-1

Which gives you an overview of how sessions can be shared using a common in-memory data store and some sample memcached code.

WebSockets

If you are using nodejs just for the WebSockets part, I'd suggest not to because then you'd have to replicate your user authentication logic in nodejs as well

You can instead do WebSockets in PHP using some library like http://socketo.me/

As far as storing the messages in MySQL goes

Your first approach of making an AJAX call to store the message in database, waiting for the response and then emitting a SocketIO event would lead to a sluggish chat experience. I'd suggest you store messages to MySQL through NodeJS (asynchronously)

On a side-note check https://github.com/kyle-dorman/ChitChat.js for adding real-time chat functionality to your website.

Upvotes: 7

Related Questions