0

去做

我想要实现的是一个混合服务器来运行和处理我的社交网络网站的需求。

建造

我已经在 PHP 上创建了所有这些,数据库是 MySql,对于实时更新,我使用了 AJAX 短轮询,它每隔“x”秒检查一次新消息。但我不希望重新检查之间有时间间隔,这就是我决定使用长轮询的原因。它是通过 Node.js+Socket.io 实现的。

问题

  1. 构建“NodeApp”后,我将在使用 apache 的网站上合并它。我怎样才能将它们整合在一起?例如:页面是:

    • example.com/home.php #Apache
    • example.com/profile.php #Apache
    • example.com/messages #Node.js
  2. 我如何按原样加载我的 php 页面,其中的消息用 node.js 编写以进行实时更新,就像 FB 一样。(使用 websockets 然后回退到支持的任何内容,这是使用 [socket.io] 完成的)一个小概述: http: //postimg.org/image/p3vq4tkvr/

我知道的事情

  1. 我可以在节点中使用 http-proxy 来使用相同的 URL 但具有不同的端口。
  2. 我可以使用两个专用 IP 和 VPN,一个用于 apache,一个用于 Node.js。
  3. 我不想在两者之间使用 iFrame。
  4. 我不想使用不同的端口,例如 www.example.com:3000 用于 node 和 www.example.com 用于 apache。
4

1 回答 1

1

现在做的差不多。我会和你分享我的经验。它可能会派上用场。我们已经为phpFox准备好了社交网络引擎。决定使用Node.js(用作传输socket.io)“增加”个人消息部分。

从一开始,PHP (phpFox) 与 Node.js 的连接就有问题。找到了桥 - dNode。该模块允许您使用 TCP 协议在虚拟服务器之间发送数据(驱动 dNode 用于许多流行的编程语言。)

下一个问题 - 数据库。最初,我们将 MySQL 与表列表一起使用(用于邮件):

mail | mail_text | user | user_info

一些测试表明,将 MySQL 与 node.js 一起使用是不合理的。出于这个原因,决定使用“对话”(在 node.js 上编写的个人消息的代号)非关系数据库MongoDB。该脚本是由 Python 编写的(可以使用和 PHP,但对于此类任务,我更喜欢使用 Python - 脚本的最佳性能和执行速度),将 MySQL 数据库“永久化”到 MongoDB,创建了这样一个方案:

messages | dialogs | texts

唯一对话框的集合是存储的消息:

dialog_id | owner_user_id | viewer_user_id | last_message | some_info

然后一切都清楚了:

  1. 当您在 dNode 的帮助下打开页面时http://site.com/mail/,PHP 会传递user_id一侧的 node.js。
  2. 当 node.js 得到user_id- 他用“对话”集合拉出所有“对话”并绘制主页。
  3. 当用户打开与用户(例如 John)的对话时,会打开一个页面,其中包含他们的通信http://site.com/mail/{John user_id}
  4. 使用 socket.io 是实时对话。

而已。我希望我的经验对你有所帮助:)

祝你好运!

于 2013-07-27T09:24:17.353 回答