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

 星宿 发布于 2023-02-08 15:22

我有一个PHP应用程序(使用Symfony2),我需要让我的用户实时交谈(和socket.IO).让我们关注聊天机制:已登录的用户可以与其他已登录用户交谈(使用Symfony中的FOSUserBundle进行登录).当用户发送消息时,它必须保存在MySQL中并实时发送给其他用户.因此,消息链接到MySQL数据库中的两个用户(发送者和接收者).

所以我有两种可能性:

我使用PHP来存储消息:

我在点击"提交"时有一个事件,并使用AJAX调用PHP URL

如果我的PHP返回"OK"(所以他正确地在数据库中添加了消息),我发出一个Socket.IO事件 - >让doctrine处理数据和symfony与我的用户

在NodeJS方面,我有一个关于此事件的监听器,我通过Socket.IO发送了另一个事件的消息

我只使用NodeJS:

如何在PHP和NodeJS端登录我的用户?

我需要实时使用不同的数据库数据库吗?

如何在NodeJS和PHP之间共享我的用户?

如果有人可以帮助我,我不知道什么是最干净的解决方案.谢谢 !

1 个回答
  • 可以使用像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 ,我建议你不要因为那时你必须在nodejs中复制你的用户身份验证逻辑

    您可以使用某些库(如http://socketo.me/)在PHP中执行WebSockets

    至于在MySQL中存储消息的话

    您的第一种方法是进行AJAX调用以将消息存储在数据库中,等待响应然后发出SocketIO事件将导致缓慢的聊天体验.我建议你通过NodeJS将消息存储到MySQL(异步)

    在旁边注意检查https://github.com/kyle-dorman/ChitChat.js,以便为您的网站添加实时聊天功能.

    2023-02-08 15:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有