2012-06-23 42 views
3

我想寫一個簡單的聊天應用程序(供測試使用)。PHP和Node.js或只有Node.js?

用戶和消息在MongoDB中持續存在,會話正在與Redis一起存儲。

PHP(Symfony2)提供身份驗證,註冊,密碼重置等,併爲公共站點(如/,/ contact等)提供服務。

當用戶登錄後,它已經控制聊天應用程序。 Backbone.js處理應用程序,node.js通過rest(或socket.io)提供數據。

我應該使用PHP和Node sidebyside還是應該只使用節點?

只使用節點將是不存在的端口衝突的禁忌是節點的應用程序變得相當大,不是那麼可讀的親(恕我直言:CMF,註冊,授權,電子郵件處理會更容易做symfony比節點)

+0

你不想綁定2個服務,相同的IP:端口,阿帕奇在80,8080運行,並且可以改變任何你想要的,如果我沒記錯的話,你可以在Node.js的指定端口要使用,所以說apache是​​本地主機:9999和node.js localhost:8888沒有衝突.. – Gntem

+0

你必須提到,該網址仍然必須是可讀的。但間接你回答了這個問題。所以backbone.js或node.js可以在不同的端口上運行。這兩種服務(node.js和symfony)的整合有什麼像最佳實踐? –

回答

4

在PHP中保持Web應用程序邏輯完全合理。這就是PHP擅長的,將它移植到node.js代碼中可能是一種浪費和痛苦的體驗。

另一方面,節點擅長網絡和服務長期運行的連接,如WebSockets(socket.io,SockJS等)。所以使用這個聊天服務器也是有道理的。

我建議你同時使用它們,因爲它們中的每一個解決了它擅長的特定問題。您可以使用某種消息隊列輕鬆地連接它們。

1

你可以嘗試使用JooDee,一個節點的網絡服務器,它允許你在你的網頁中嵌入serverside javascript。如果您熟悉Node和PHP/ASP,創建頁面是一件輕而易舉的事情。這裏是一個什麼樣的頁面看起來像下面的例子:

<!DOCTYPE html> 
<html> 
<: //server side code in here 
    var os = require('os'); 
    var hostname = os.hostname(); 
:> 
<body> 
    <div>Your hostname is <::hostname:></div> 
</body> 
</html> 

使用JooDee也可以讓你暴露服務器的JavaScript通過附加屬性的「客戶」對象服務器端,並訪問瓦爾到客戶端沒有努力所產生的「客戶端的客戶端對象javascript。

https://github.com/BigIroh/JooDee