bluex/socket-io

为laravel提供的Socket Io接口。

dev-main 2021-12-06 19:24 UTC

This package is auto-updated.

Last update: 2024-09-07 01:53:26 UTC


README

简单集成Laravel事件广播的Socket Io接口(如 pusher

安装

我们将使用Composer的require命令下载并安装我们的包

composer require bluex/socket-io

然后我们使用这个artisan命令来安装我们的socket服务器(用nodejs-express编写)

php artisan io:install

然后使用以下命令安装我们的socket服务器依赖

npm install

切换广播驱动到socket io

我们需要告诉Laravel使用Socket Io通道进行实时更新。通过打开 config/app.php 并取消注释以下行进行注册Broadcast应用程序服务

// App\Providers\BroadcastServiceProvider::class,

并在同一文件中的 providers 数组 中添加以下行

Bluex\SocketIo\Providers\SocketIoServiceProvider::class,

在项目根目录的 .env 文件中,将广播驱动从默认的“log”值更改为“socket-io”。

BROADCAST_DRIVER=socket-io

向下滚动此文件并添加您的socket服务器配置

SOCKET_SERVER_URL=127.0.0.1
SOCKET_SERVER_PORT=3000

config/broadcasting.php 文件中,向 connections 数组 添加以下代码

'socket-io'  =>  [
    'driver'  =>  'socket-io',
],

用法

服务器端

首先,我们需要使用nodejs运行我们的socket服务器

node server.js

然后,使用 artisan 命令创建一个普通的laravel事件

php artisan make:event TestEvent

在事件类中,添加频道名称(现在只有公共频道可用),例如

public  function  broadcastOn()
{
    return  ['testChannel'];
}

然后从任何地方触发事件(如果您已经有一个队列工作器正在运行,不要忘记实现 ShouldBroadcastNow 接口)

客户端

JavaScript示例
let  ip_address  =  "{{ env('SOCKET_SERVER_URL') }}";
let  socket_port  =  '3000';
let  socket  =  io(ip_address  +  ':'  +  socket_port,  {
    auth:  {
	    token:  "123",
    }
});
socket.on('testChannel',  (data)  =>  {
	console.log('testChannel : ');
	console.log(data);
});

待办事项

  • 单元测试
  • 支持私有频道
  • 编写文档
  • 添加版本标签