【发布时间】:2013-09-28 18:53:30
【问题描述】:
我有一个用 Laravel 4 编写的 web 应用程序。这个应用程序使用 Ratchet,更具体地说,它使用包 Latchet。作为旁注,我正在使用以下技术:
现在我得到了以下场景:
- 我有一个幻灯片,应该通过 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。他们说他们在v1.0,但是服务器不可能推送。当我尝试另一个套接字插件时,我会回来查看。
标签: laravel laravel-4 zeromq phpwebsocket ratchet