0

I tring add a chat extension to my web site , watched very much video lesson, Laravel and Pusher using user. Normally website is working

broadcasting(new MyEvent('my-event'));

but if I add line -before return line- , giving 500 Internal Server Error. sended message is saving to DB but not return value... Please help me

My ChatEvent.php

use App\Chat;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Broadcasting\PresenceChannel;
....
class ChatEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $chat;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Chat $chat)
    {
        $this->chat = $chat;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PresenceChannel('chat');
    }
}

My ChatController.php

use Illuminate\Http\Request;
use App\Chat;
use App\Events\ChatEvent;

class ChatController extends Controller
{
public function __construct(){
    $this->middleware('auth');
}

public function index(){
    return view('chat.chat');
}

public function fetchAllMessages(){
    return Chat::with('user')->get();
}

public function sendMessage(Request $request){
    $chat = auth()->user()->messages()->create([
        'message' => $request->message
    ]);

    broadcast(new ChatEvent($chat->load('user')))->toOthers();

    return ['status' => 'success'];
}
}

VueJs Post And Get codes

<script>
    export default {

        methods: {
            fetchMessages(){
                axios.get('messages').then(response =>{
                    this.messages = response.data;
                })
            },

            sendMessage(){
                this.messages.push({
                    user: this.user,
                    message: this.newMessage
                });

                axios.post('messages',{message: this.newMessage});
                this.newMessage='';
            },


        }
    }
</script>

Routes and Channels

Route::get('/chats','ChatController@index');
Route::get('/messages','ChatController@fetchAllMessages');
Route::post('/messages','ChatController@sendMessage');

Broadcast::channel('chat', function ($user) {
  return $user;
});

Pusher's AppKey,Secret,ID and Cluster OK, Broadcaster-Driver: pusher Everywhere

0 Answers0