我对实时聊天应用程序等进行了“很多”研究,但我无法真正找到缺失的部分或我应该进入的方向。
我在寻找什么。 两个用户之间的私有(private)直接消息传递系统,无需按固定时间间隔发送获取请求。
我们已经拥有的。 一个完整的 PHP Rest API w/MySQL,适用于我们的整个应用程序,包括用户、帖子、消息、配置文件……以及整个 Angular 5 客户端应用程序。
当前的消息系统运行在基本的 POST 上来发送消息,并使用 GET 来获取新消息(每 30 秒一次)(当时的实时聊天应用程序从来没有意图)
在数据库和 API 方面,两个 UserID 之间存在“对话”,每个对话都包含带有 UserID-from 的消息。
发现建议:
Sockets(通过 Socket.io 或类似的东西):“问题”是我们的目标是到夏末至少拥有 10k+ 用户。如果有 500 多个打开的套接字,套接字可能会破坏我们的服务器或至少破坏我们的 PHP API,还是我弄错了? (我们目前的 GET 情况也可能如此。)
Firebase:但是它有自己独立的数据库之类的东西,不确定如何将其与我们现有的 API 和身份验证等结合起来。
100 多个主题和情况只是关于“聊天室”之类的应用程序,而不是关于两个注册用户之间的直接消息传递。
我还有一个想法,基于 NodeJS Express 服务器,为消息传递部分创建一个单独的微服务,但话又说回来,客户端需要一个到该服务器的开放套接字,而不仅仅是“一个套接字”,而是只为这两个用户提供私有(private) channel ? (然后我将不得不使用一些脏的nodejs-mysql部分作为UserID和身份验证,而不是在Mongo中运行所有内容)
此时..我不确定该往哪个方向走,也不知道如何实现,而无需将我们的消息数据“提供”给第三方服务器(例如 Firebase),或者通过尝试 4-来浪费宝贵的时间5 种不同的方法。
我知道我可能需要重写整个客户端应用程序消息传递部分,但这是我最不关心的。
我该往什么方向走,带着什么样的想法?也许有人有同样的情况需要转换现有的 datababse-conversation-users-stuffs 应用程序?
最佳答案
就像更新一样。我已经实现了整个 Socket 部分,并且运行完美!
目前,我有一个 NodeJS (WebSocket) Socket 服务器正在运行,客户端在启动时连接到该服务器。
PHP API 使用 clientId 和有效负载(不同类型、不同主体等)向该套接字服务器发送 cURL POST 请求。套接字服务器检查该客户端是否已连接(通过 ID 连接查找数组)并将该消息转发给该客户端。然后客户端处理传入的消息类型以检查要使用有效负载执行哪个操作。
在性能方面没有问题或评论。只是 IE 用户在与套接字服务器连接时遇到一些问题。
目前用于实时通知、聊天消息、动态更新……
关于PHP 和 Angular 2 - "live"使用/自己的 API 和数据库直接消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50760308/