本文介绍了通过Laravel Echo 、Pusher 、JQuery ajax等实现网站即时通信——通信双方无需手动刷新浏览器即可看到对方发送的信息。
在过去,实现这种通信最为常用的技术是长轮询,但限于 HTTP 协议的单向性,客户端需要一遍一遍地主动询问服务端的处理结果。所以这种方式存在明显缺陷,不仅占用服务端资源、还不能实时获得服务端处理结果。
现在,普遍采用 WebSocket 协议来处理实时交互,它是一种双向协议,允许服务端主动推送信息到客户端。
Laravel 看起来提供了两套方案实现即时通信,Laravel Echo + Pusher、Redis + http://Socket.io + Node.js。二者都需要借助Laravel的Events、Broadcasting、Queues,请确保你熟悉以上内容。
这里我们选用前者
- 先创建一个事件——php artisan make:event TestEvent
创建的事件在app/Events,编辑代码如下:
use IlluminateContractsBroadcastingShouldBroadcast;
class TestEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
// 只有public的数据会被广播
public $msg;
public function __construct($msg)
{
$this->msg =