own3d / socket
OWN3D Socket 客户端
1.2.0
2024-06-17 10:49 UTC
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^6.3|^7.0
- illuminate/support: ~5.4|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- own3d/id: ^1.7|^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- orchestra/testbench: ^6.14
- own3d/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^9.5
README
安装
composer require own3d/socket
配置
在 config/services.php
配置文件中添加 own3d-socket
配置。
'own3d-socket' => [ 'username' => env('OWN3D_SOCKET_USERNAME', 'own3d-socket'), 'password' => env('OWN3D_SOCKET_PASSWORD') 'secret' => env('OWN3D_SOCKET_SECRET'), ],
作为 Laravel Broadcaster 进行配置
OWN3D Socket 也可以用作 Laravel Broadcaster。重要的是,所有事件都必须以您的 own3d/id 客户端 ID 为前缀。这已经在广播器中完成,并可以通过 room_prefix
进行配置。
在 config/broadcasting.php
配置文件中添加 own3d-socket
配置。
'own3d-socket' => [ 'driver' => 'own3d-socket', 'room_prefix' => env('OWN3D_ID_KEY'), ],
在客户端侧,使用
import {io} from 'socket.io-client'; const socket = io('https://socket-hel1-1.own3d.dev', { withCredentials: true, }); socket .on('connect', () => { console.log('Socket connected.', socket.id); socket.emit('room', '<room-prefix>.<channel-name>'); }) .on('App\\Events\\ExampleEvent', (e) => { // e contains additional event data });
namespace App\Events; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class ExampleEvent implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; private string $userId; /** * Get the channels the event should broadcast on. * * @return Channel|array */ public function broadcastOn() { return new Channel('channel-name'); } }