bluex / socket-io
为laravel提供的Socket Io接口。
dev-main
2021-12-06 19:24 UTC
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.0.1
- illuminate/contracts: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3
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);
});
待办事项
- 单元测试
- 支持私有频道
- 编写文档
- 添加版本标签