我已经研究了“很多”关于实时聊天应用程序之类的东西,但是我真的找不到缺少的部分或者我应该去的方向。
我在找什么。两个用户之间的一种私人的、直接的消息传递系统,不需要按固定的间隔发送获取请求。
我们已经拥有的。一个完整的php rest api w/mysql,用于我们的整个应用程序,包括用户、帖子、消息、配置文件。。以及一个完整的Angular5客户端应用程序。
当前的消息传递系统运行在basic post上,发送消息,get获取新消息(每30秒一次)(在那时,实时聊天应用程序从来就不是这样的)
在数据库和api方面,两个userid之间有“对话”,每个对话都包含来自的一个userid的消息。
找到建议:
sockets(通过socket.io或类似的东西):问题是,我们的目标是在夏季结束时至少有1万以上的用户。如果有超过500个打开的套接字,套接字可能会破坏我们的服务器或者至少破坏我们的php api,或者我搞错了吗(我们现在的情况可能也是…)
firebase:但是它有自己独立的数据库等等,不知道如何将它与我们现有的api和身份验证等结合起来。
100多个主题和情况,只是一个类似“聊天室”的应用程序,而不是两个注册用户之间的直接消息。
我还想在nodejs express服务器的基础上为消息传递部分创建一个单独的微服务,但是同样,客户端需要一个到该服务器的开放套接字,而不仅仅是一个“套接字”,而是一个仅用于这两个用户的专用通道(然后我将不得不使用一些脏的nodejs mysql部分来进行用户id和身份验证,而不是在mongo中运行所有东西(例如)
在这一点上。。我不知道该朝哪个方向发展,如何实现这一点,而不必将我们的消息传递数据“提供”给firebase之类的第三方服务器,或者尝试4-5种不同的方法来浪费宝贵的时间。
我知道我可能必须重写整个客户端应用程序消息传递部分,但这是我最不关心的。
我应该往哪个方向走,有什么样的想法?可能有人有同样的情况,需要转换现有的数据库会话用户填充应用程序?
1条答案
按热度按时间ygya80vv1#
作为更新。我已经实现了整个套接字部分,它运行得非常完美!
目前,我有一个nodejs(websocket)socket服务器,在启动时客户机连接到该服务器。
phpapi向socket服务器发送一个curlpost请求,其中包含clientid和有效负载(不同的类型、不同的主体等等)。socket服务器检查该客户机是否已连接(通过id连接查找数组),并将该消息转发给该客户机。然后,客户机处理传入的消息类型,以检查要使用有效负载执行的操作。
性能方面没有问题或评论。只是ie用户在连接套接字服务器时遇到了一些问题。
目前正在使用的实时通知,聊天信息,后饲料更新。。