NodeJS与PHP应用程序和用户会话

我有一个PHP应用程序(Symfony2),我需要让我的用户实时(使用socket.IO)和其他用户交谈。 让我们把重点放在聊天机制上:一个login的用户可以和另一个login的用户交谈(用Symfony中的FOSUserBundlelogin)。 当用户发送消息时,必须将其保存在MySQL中并实时发送给其他用户。 所以这个消息被链接到我的MySQL数据库中的两个用户(一个发送者和一个接收者)。

所以我有两种可能性:

  • 我使用PHP来存储消息:
    • 我有一个事件点击“提交”,并与AJAX调用PHPurl
    • 如果我的PHP返回“确定”(所以他正确地在数据库中添加消息),我发出一个Socket.IO事件 – >让教条与我的用户处理数据和symfony
    • 在NodeJS方面,我有一个监听这个事件,我通过Socket.IO发送消息与其他事件
  • 我只使用NodeJS:
    • 我怎样才能在PHP和NodeJS方面login我的用户?
    • 我需要实时使用不同的数据库数据库?
    • 如何在NodeJS和PHP之间共享我的用户?

我不知道什么是最干净的解决scheme,如果有人能帮助我。 谢谢 !

可以使用像redis这样的通用数据存储来存储用户会话

检查这个链接以供参考

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

另外检查

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

其中概述了如何使用通用内存数据存储和一些示例memcached代码来共享会话。

的WebSockets

如果您只是为WebSockets部分使用nodejs,我build议不要这样做,因为那样您就必须在nodejs中复制您的用户身份validation逻辑

你可以改用PHP的WebSockets来使用像http://socketo.me/这样的库。

至于存储消息在MySQL去

你的第一个做AJAX调用的方法是将消息存储在数据库中,等待响应,然后发出一个SocketIO事件将导致一个缓慢的聊天体验。 我build议你通过NodeJS将消息存储到MySQL(asynchronous)

在旁边注意检查https://github.com/kyle-dorman/ChitChat.js添加实时聊天function到您的网站。