2012-05-07 56 views
4

我正在使用PHP應用程序。它允許用戶創建私人項目並邀請其他人蔘與。現在,使用node.js和socket.io,我想做出實時評論,發佈等。在PHP應用程序中使用node.js和socket.io

什麼是最好的架構?

我現在看到兩種解決方案。

第一個是:

  • 用戶發送AJAX查詢PHP後端: http://example.com/comment_add.php?text= ...
  • comment_add.php增加 評論數據庫,並通過AMPQ(?或更好的東西)通知 節點.js服務器,它向頻道的訂戶廣播評論。

二是:

  • 用戶發送AJAX查詢到的Node.js服務器:(?但是如何又是怎麼回事授權)http://example.com:3000/comment_add
  • Node.js的發送請求給PHP後臺,接收響應,然後廣播給頻道的訂閱者。

什麼是最好的方法?還有其他方法嗎?如何正確實施?

回答

1

網站建設速度快,以及其他一些功能。最後我工作的解決方案是#1。

當用戶建立到node.js/socket.io的連接時,他只是用他的PHP會話ID發送'subscribe'消息給node.js。 Node.js使用POST請求檢查授權給PHP後端,如果一切正常,允許用戶建立連接。

前端將所有請求發送到PHP,就像在node.js之前一樣。 PHP修改某些對象,誰可以訪問修改的對象和(經由AMQP或redis的發佈/訂閱等)發送消息的node.js檢查:

{ 
    id_object: 125342, 
    users: [5, 23, 9882] 
} 

的node.js然後檢查誰從列出的用戶有活動套接字併爲每個用戶發送GET請求,PHP:

{ 
    userId: 5, 
    id_object: 125342 
} 

特別PHP控制器接收到這個請求,運行查詢來獲取與給定用戶ID的權限對象,然後發送消息,導致答案的node.js。 Node.js然後通過套接字向用戶的前端發送答案。

2

第二種方法是最好的方法。您可以使用http通過node.js與PHP進行通信。授權可以在node.js中完成,但每次都將驗證憑據傳遞給PHP

0

一年前,我在大學開始我的最後一年項目時遇到了同樣的問題。我意識到我的項目更適合將Node用作獨立應用程序。節點非常擅長處理I/O,這可以是從HTTP請求到數據庫查詢的任何事情。在Node後面添加基於PHP的Web服務器將會增加不必要的複雜性。如果您的應用程序需要執行CPU密集型任務,那麼您可以非常容易地生成執行所需操作的「子」節點,並將結果返回給父節點。

然而,你提到的兩種方法中,我會選擇#2。 Node.js可以通過多種方式與您的PHP服務器通信,您可以考慮在PHP服務器和Node之間創建一個unix套接字連接。如果不可用,您可以使用HTTP簡單地在節點和PHP後端之間進行通信。 :)

到這裏看看,這裏是非常相似,你自己一個問題的解決方案: http://forum.kohanaframework.org/discussion/comment/57607

4

當您決定使用的node.js + socket.io做出實時web的應用程序,你不需要再考慮PHP,也不需要考慮Ajax ...... Socket.io將是客戶端和服務器之間的通信。

但是,是的,你可以使用Ajax和PHP對於不需要實時

相關問題