PHP&;角度2-“;“生活”;使用自己的API和数据库进行直接消息传递

PHP&;角度2-“;“生活”;使用自己的API和数据库进行直接消息传递,php,mysql,angular,private,messaging,Php,Mysql,Angular,Private,Messaging,我已经研究了很多关于实时聊天应用程序之类的东西,但是我真的找不到缺少的部分或者我应该去的方向 我在找什么。 两个用户之间的私人直接消息传递系统,无需在固定的时间间隔内发送获取请求 我们已经拥有的。 一个完整的PHP Rest API w/MySQL,用于我们的整个应用程序,包括用户、帖子、消息、概要文件等。。和一个完整的Angular 5客户端应用程序 当前的消息传递系统运行在basicpost上发送消息,GET上获取新消息(每30秒一次)(当时,实时聊天应用程序从未打算这样做) 在数据库和AP

我已经研究了很多关于实时聊天应用程序之类的东西,但是我真的找不到缺少的部分或者我应该去的方向

我在找什么。 两个用户之间的私人直接消息传递系统,无需在固定的时间间隔内发送获取请求

我们已经拥有的。 一个完整的PHP Rest API w/MySQL,用于我们的整个应用程序,包括用户、帖子、消息、概要文件等。。和一个完整的Angular 5客户端应用程序

当前的消息传递系统运行在basicpost上发送消息,GET上获取新消息(每30秒一次)(当时,实时聊天应用程序从未打算这样做)

在数据库和API方面,两个用户ID之间存在“对话”,每个对话包含来自的用户ID的消息

找到建议:

  • Sockets(通过Socket.io或类似的方式):问题是,我们的目标是在夏季结束时至少有10万以上的用户。如果有超过500个开放的套接字,套接字可能会破坏我们的服务器,或者至少破坏我们的PHP API,或者我弄错了吗?(我们与GET的当前情况可能也是如此……)

  • Firebase:但它有自己独立的数据库和其他东西,不知道如何将其与我们现有的API和身份验证等结合起来

  • 100多个主题和情况,只是一个类似“聊天室”的应用程序,而不是两个注册用户之间的直接消息传递

我还想为消息传递部分创建一个单独的微服务,基于NodeJS Express服务器,但是,客户机需要一个开放的套接字连接到该服务器,而不仅仅是“套接字”,而是一个仅用于这两个用户的专用通道?(然后我将不得不使用一些脏的nodejs-mysql部分来进行用户标识和身份验证,而不是在Mongo中运行所有的东西)

在这一点上。。我不确定该朝哪个方向发展,以及如何实现这一点,而不必将我们的消息传递数据“提供”给第三方服务器,例如Firebase,或者通过尝试4-5种不同的方法来浪费宝贵的时间

我知道我可能必须重写整个客户端应用程序消息传递部分,但这是我最不关心的


我应该朝哪个方向走,用什么样的想法?可能有人与需要转换现有数据库会话用户填充应用程序的情况相同?

只是作为更新。我已经实现了整个套接字部分,它运行得非常好

目前,我有一个NodeJS(WebSocket)套接字服务器,客户端在启动时连接到该服务器

PHPAPI使用clientId和有效负载(不同类型、不同主体,…)向套接字服务器发送一个cURL POST请求。套接字服务器检查该客户端是否已连接(通过ID连接查找数组),并将该消息转发给该客户端。然后,客户机处理传入的消息类型,以检查要使用有效负载执行的操作

在性能方面没有问题或评论。只是IE用户在连接套接字服务器时出现了一些问题


目前用于实时通知、聊天信息、帖子提要更新等

很可能就是这样。对于他们来说,这可能是目前为止最好的用例。为什么你认为这会破坏你的应用程序?我真的找不到性能基准或类似的东西,例如,当服务器有200多个开放连接时。它“吓坏”了我,只是一个关于客户端和服务器之间持续活动和打开的连接的想法,以及运行一个处理1000多个请求的活动API时200多个连接的想法:D我一直使用“完成时关闭/结束”开发防止与服务器或数据库保持开放连接的原则。最好的基准测试方法是尝试。幸运的是,用它们模拟负载对于一些机器人来说并不难。如果我们都害怕未知,我们会在哪里?你说得对,好先生。我目前的思路是让所有请求仍然通过PHPAPI运行,但让套接字通过NodeJS处理,这样PHP就可以向节点服务器广播并更新侦听器(这至少可以消除定时的get间隔)。但我将首先尝试使用PHP套接字,看看/测试性能如何,以防止复杂性等等。