1

我正在创建一个社交网络网站,我需要一个 IM/聊天解决方案。

对话只是一对一的,用户只能与他们的朋友聊天(即 Facebook 聊天 - 没有频道,没有房间......)。

该网站是用带有 MySQL 数据库的 CodeIgniter(PHP) 制作的。可能会放在 VPS (Linux) 上,所以我可以控制环境。此外,预计将拥有超过 100 000 个用户。

所以,我需要一些关于如何进行聊天的想法。

到目前为止我的想法:

  • 每 X 秒进行一次 Ajax 轮询(对于这种大小的网站来说不是很好的解决方案)
  • 实现 Jabber/XMPP 系统(我没有这方面的信息,也不可能)
  • 使用 3rd 方服务(如Pusher.com
  • Node.js在and中创建聊天socket.io,并使其独立于网站的其他部分

经过一些研究并在此处阅读了一些答案

https://stackoverflow.com/a/11362929/928540

https://stackoverflow.com/a/5654487/928540

我真的很喜欢 and 的想法Node.jssocket.io所以我想听听一些关于它的意见,也许还有一些指导、链接、帮助、教程......

4

2 回答 2

1

此外,预计将拥有超过 100 000 个用户

我认为问题还在于有多少活跃用户/连接。

每 X 秒进行一次 Ajax 轮询(对于这种规模的网站来说不是很好的解决方案)。

诚然。这是一个坏主意。

实现 Jabber/XMPP 系统(我没有这方面的信息,也不可能)

EjabberdBOSH这样的东西很受欢迎。我玩了韵律,因为它很容易安装,strophe.js作为 BOSH 客户端(浏览器中的 javascript)。

使用第 3 方服务(如 Pusher.com)

最容易实现(没有缩放问题),但可能会变得昂贵。5000 个同时连接将花费您每月 199 美元(太贵),我认为您可能需要?然后你有大约 5000 个活动连接,所以它是有利可图的(?)。

在 Node.js 和 socket.io 中创建聊天,并使其独立于网站的其他部分

非常流行的解决方案,但现在我相信一些用户正在经历内存泄漏(但这可能已经解决了)。这可能只是websockets 传输的问题。此外,它可能不是真正的泄漏,而是由于惰性 GC 而导致的高内存使用。我建议在完全承诺之前先进行分析。

于 2012-07-27T12:03:53.327 回答
0

Meteor可能是您可以使用的解决方案。它旨在创建“实时”应用程序,我敢打赌,构建一对一的消息传递系统是轻而易举的事。

我知道它不是 PHP,但您提到使用 Node.js,我想如果您可以使用 Node.js,那么您可以使用它。

于 2012-07-27T02:25:55.283 回答