CodeWriteson class SendMessageEvent implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; public $user; public $message; /** * Create a new event instance. * * @return void */ public function __construct(User $user,$message) { $this->user=$user; $this->message=$message; } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new PrivateChannel('SendMessageChannel'); } }
CodeWriteson const app = new Vue({ el: '#app', data:{ message:"", chat:{ message: [] } }, methods:{ send(){ if(this.message.length != 0) { this.chat.message.push(this.message); this.message=""; } } }, mounted(){ Echo.private('SendMessageChannel') .listen('SendMessageEvent',(e)=> { console.log(e); }); } });
CodeWriteson Broadcast::channel('SendMessageChannel', function ($user) { return ['name'=>$user->name]; });
CodeWriteson public function sendMessage(Request $request) { $user=User::find(Auth::id()); event(new SendMessageEvent($user,$request->message)); return ['status'=>'Message Sent']; }
CodeWriteson <?php namespace App\Listeners; use App\Events\SendMessageEvent; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; class SendMessageEventListener { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param object $event * @return void */ public function handle(SendMessageEvent $event) { return $event; } }
CodeWriteson import Echo from 'laravel-echo'; window.Pusher = require('pusher-js'); window.Echo = new Echo({ broadcaster: 'pusher', key: process.env.MIX_PUSHER_APP_KEY, cluster: process.env.MIX_PUSHER_APP_CLUSTER, forceTLS: true });
CodeWriteson Herseyi yaptim yardim ederseniz sevinirim. BROADCAST_DRIVER=pusher CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120
CodeWriteson Sorun bulundu. .env deki app key ile bootstrap.js deki app key ayni degildi. Bootstrap.js de eski app key i aliyordu, npm run watch u kapatip yeniden run edince problem ortadan kalkti.
CodeWriteson tpaksu yardimi olduysa ne mutlu bana. Bu ornekle calisiyor. Suanda tek sorunum listen kisminda Auth->user()->id yi ala bilmek)
tpaksu CodeWriteson Listen kısmında alırsan kafası karışabilir, SendMessageEvent'de auth::user gönderiyorsun zaten, ordan alamıyor musun?
CodeWriteson tpaksu ordan nasil ala bilirim? olaylar vue jsde oluyor eventde aldigim auth user i orda nasil kullana bilirim?
tpaksu Listen kısmında derken ben Event Listener'dan bahsediyorsun sandım kusura bakma, pusher listen'dan bahsediyormuşsun. Daha önce kullandığım birşey değil ama dökümantasyonunda baya detay var gibi görünüyor.
intbyte Kanala subscribe olamyi deneyin. // Bu sekilde kanala subscribe olun. var channel = pusher.subscribe('*kanal-adi*'); channel.bind('App\\Events\\*EventAdi*', printMessage); function printMessage(data) { console.log(data); }