我应该使用什么技术来创建实时一对一聊天?

What technologies should I use to create a real time One to One chat?

我是一名 PHP 开发人员,在其他服务器端语言方面缺乏经验。

我希望您能给我提供线索、建议、关键字或任何可以帮助我更好地完善研究的内容。

我想做的基本上是创建一个一对一的移动应用程序聊天,它将扩展

会有3个用户的频道:用户A,用户B和"computer"推送一些消息根据一些频道信息比如上次有消息已发送等 用户 A 应该知道用户 B 是否在线、写作等。 每个对话都应该 存储在数据库 中,并由某些算法进行分析。这些算法还会分析用户 Facebook 开放图表上的内容。

应用程序应该能够在 IOS 和 Android 上发送通知。

Web 管理应允许管理员设置一些内容,以定义 "computer" 将发送何种消息。

我阅读了很多关于 websocket、xmpp、node.js、socket.io 等的帖子,但我在这些领域的知识不足,无法决定我应该构建什么样的架构一切都协同工作。或者也许有一些适合我需要的基于云的解决方案...

谢谢

正如您所说,有很多方法可以实现这种结构,但我将写关于 node.js + socket.io 的部分;

1) 它是可扩展的。你可以使用集群、nginx、haproxy。等将负载平衡应用到您的 socket.io 应用程序 (see here) Of course you've to use redis or mongo or some kind of store for socket.io that different servers and processes can communicate each other. (see here)

2) socket.io 有房间。这意味着客户和任何计算机机器人都可以加入那个房间,互相分享事件。因此,在您的场景中,用户 A、用户 B 和计算机机器人应该加入同一个房间,发送到该房间的事件将广播给每个房间成员。 (事件可能因在线、打字、新消息等而异)(see here)

3) node.js 可以为 iOS and Android.

发送推送通知

4)您可以在新消息事件时将每条消息写入您选择的数据库。

5) 您可以使用 Express framework for your Administration page. And you can use passport 创建 REST api 用于身份验证和授权。您可以使用 Jquery 或 React 等其他前端框架来使用其余的 api

Meteor is very well suited for something like this and gives you everything you need. There are also open sourced chat systems 已经使用 meteor 构建,以便了解您需要去哪里。更多自定义路线将按照@cdagli 所说的进行操作。