首页 > 解决方案 > PHP & Angular 2 - 带有自己的 API 和数据库的“实时”直接消息传递

问题描述

我已经对实时聊天应用程序等进行了“很多”研究,但我无法真正找到缺失的部分或我应该进入的方向。

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

我们已经拥有的。 一个完整的 PHP Rest API w/ MySQL,适用于我们的整个应用程序,包括用户、帖子、消息、配置文件……以及整个 Angular 5 客户端应用程序。

当前的消息系统运行在基本的 POST 上以发送消息,并在 GET 上运行以获取新消息(每 30 秒)(当时从来没有实时聊天应用程序的意图)

数据库和 API 方面,两个 UserID 之间存在“对话”,每个对话都包含带有 UserID-from 的消息。

找到的建议:

我也有想法为消息传递部分创建一个单独的微服务,基于 NodeJS Express 服务器,但话又说回来,客户端需要一个到该服务器的开放套接字,而不仅仅是“一个套接字”,而是一个私有通道只为那两个用户?(然后我将不得不使用一些肮脏的 nodejs-mysql 部分作为用户 ID 和身份验证,而不是在 Mongo 中运行所有内容)

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

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

我应该往哪个方向走,带着什么样的想法?也许有人遇到同样的情况需要转换现有的 datababse-conversation-users-stuffs 应用程序?

标签: phpmysqlangularprivatemessaging

解决方案


就像更新一样。我已经实现了整个 Socket 部分并且它运行完美!

目前,我有一个 NodeJS (WebSocket) Socket 服务器正在运行,客户端在启动时连接到该服务器。

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

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

目前用于实时通知、聊天消息、订阅后更新、..


推荐阅读