我得到了一個在Laravel 4中編寫的web應用程序。這個應用程序使用棘輪,更具體地說,它使用包Latchet。一點題外話,我使用了以下技術:使用websockets的最佳實踐?
現在,我得到了以下方案:
- 我有一個幻燈片即應通過websocket接收更新。
- 整個應用程序已經建立,我可以通過ZeroMq發佈從PHP到我的websocket客戶端的新代碼更改。
在我的routes.php文件,我有以下的代碼,從而使主題正確註冊:
//routes.php // Setup a connection and register a topic where clients can connect to. Latchet::connection('Connection'); Latchet::topic('PhotoStream/{client}', 'PhotoStreamController');
然後,我開始棘輪服務器。
sudo php artisan latchet:listen
如果照片被上傳,然後我可以運行下面的代碼來推送更新到客戶端都是聽我演講的題目(PhotoStream/client1
在這種情況下):
// Create the object, save it to db and then publish it to my websockets
$photo = new Photo;
$photo->location = 'path/to/file';
$photo->save();
// Publish it through my websocket clients. (push from server).
Latchet::publish('PhotoStream/client1', array('msg' => $photo->toArray()));
該代碼全部有效,但在更新的情況下。我的問題如下:
我該如何處理客戶端的初始化?
- 我應該先用普通的舊PHP渲染頁面,然後初始化我的websocket客戶端,然後接收進一步的更新(如果有的話)?
- 或者我應該在註冊一個新的websocket客戶端時,爲請求提供一個額外的參數,以便服務器通過websockets向我發送完整的數據?
這兩個選項中的後者似乎是對我來說最好的選擇,但我真的不知道如何以良好的方式實現這一點。
我希望你有更多的答覆。我開始用laravel實現websockets;我知道一點,但我的搜索仍在繼續。 –
絕對讓我更新! –
那麼,絕對不要使用BrainSockets。他們說他們在1.0版本,但是服務器無法推送。當我嘗試另一個套接字插件時,我會再回來查看。 –