我应该使用哪些技术来创建实时的一对一聊天?

时间:2015-06-09 14:49:03

标签: chat real-time scale

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

我希望你能给我带头,建议,关键词或任何可以帮助我更好地完善我的研究的内容。

我想要做的主要是创建一个一对一的移动应用聊天扩展

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

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

网络管理应该允许管理员设置一些内容来定义“计算机”将发送什么类型的消息。

我阅读了很多关于websocket,xmpp,node.js,socket.io等的帖子,但是我对这些领域没有足够的知识来决定我应该构建什么样的架构来使所有东西一起工作。或者也许有一些云基础解决方案可以满足我的需求......

由于

2 个答案:

答案 0 :(得分:3)

正如您所说,有很多方法可以实现这种结构,但我要写一下node.js + socket.io part;

1)可扩展。您可以使用cluster,nginx,haproxy。等等。将负载均衡应用于您的socket.io应用程序(see here)当然,您已经使用redis或mongo或某种类型的store.io存储,不同的服务器和进程可以相互通信。 (see here

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

3) node.js可以为iOSAndroid发送推送通知。

4)您可以在新邮件事件中将每封邮件写入您选择的数据库。

5)您可以为管理页面创建一个带有Express framework的REST API。您可以使用passport进行身份验证和授权。您可以使用Jquery或其他一些前端框架(如React等)来使用其余的api。

答案 1 :(得分:1)

Meteor非常适合这样的事情,并为您提供所需的一切。还有open sourced chat systems已经与流星建立,以了解你需要去的地方。更自定义的路线是做@cdagli所说的。