2012-08-31 107 views
15

我有一個使用laravel編寫的PHP應用程序。基於Socket.IO的PHP應用程序+基於WebSocket的通知

現在,我要補充一點,從服務器推信息的實時通知系統 - >客戶端,可以檢索消息從客戶推送 - >服務器。

由於Socket.IO是向後兼容的,並緩慢下降,我想使用它的WebSocket的/ AJAX輪詢的一部分。

問題是,Socket.IO默認與Node.JS後端一起工作。

我有對服務器的根訪問權限,並行運行(Apache和Node)或添加額外任何內容都沒有問題。

的問題是,如何發送從PHP到節點+ Sockets.IO的消息?

然後,如何將消息從Sockets.IO + Node傳輸到PHP?

我已經離開了節點+插座到瀏覽器的一部分了,因爲那是非常直截了當。

我見過利用Express.js + CURL and/or POST requests的例子,但是,是不是有這樣做的一個較低的水平呢?

我知道DNode + PHP,但我無法想象如何組裝所有東西 - Apache,PHP,Node,Socket.IO,DNode,所以它可以無縫協作。

此外,我已經轉變成laravel庫這個PHP WebSockets server實現。但是,這個庫的問題在於它爲客戶端使用乾淨的WebSockets。而且,我找不到與Socket.IO client一起破解它的方法。

回答

8

本教程的using PHP and Socket.IO回答了您的問題的主要部分。

socket.io不是您唯一的選擇。看看realtime web tech guide。從外觀上看,目前最好的基於PHP的解決方案是Ratchet。這需要作爲一個獨立的過程來運行,所以你仍然會遇到跨進程通信問題。

常見的跨進程通信問題是使用消息隊列。當你希望在Apache上運行的PHP應用程序被告知來自實時網絡技術的事件時,問題就出現了。即使是從實時Web技術過程到apache服務器的調用,您可能也必須通過網絡調用來完成此操作。

另一種選擇是卸載實時通信像Pusher誰我工作的託管服務。

此最近的問題也是相關的,有一些有用的鏈接:Is native PHP support for Web Sockets available?

+0

該死的,那棘輪!它擁有! http://socketo.me/docs/push有關於如何從您的非棘輪應用推送的分步教程。我在幾分鐘內實現了該功能。 + 10爲棘輪。 – jolt

+0

@leggetter哇,推杆看起來像在我這裏真正的無腦。感謝分享這個。我想我會試試看。這更好,然後浪費我的時間來實現我自己的系統。 –

+0

是的,Pusher.com似乎是一個合理的路線! –

1

節點和apache/php之間沒有簡單的通信方式。所以你要麼必須在節點中再次寫入所有的功能(連接到mysql數據庫等等),要麼創建一個API來從節點調用並傳遞給套接字。

然而,你可以使用jQuery插件,如Jquery graceful websocketsthis php class來獲得自己的websockets功能與jQuery和PHP,而不是使用sockets.io。