Laravel echo, загрузка io сокета в React-Native - PullRequest
1 голос
/ 20 июня 2020

Я пытаюсь получить модель, когда она была создана. Проблема в том, что событие запускается, но я ничего не получаю от внешнего интерфейса, поэтому я предполагаю, что это всего лишь проблема внешнего интерфейса, поэтому позвольте мне показать код:

Давайте начать с бэкэнда:

Событие:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

use App\Homework;

class HomeworkCreated implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $homework;

    public function __construct($homework)
    {
        $this->homework = $homework;
    }

    public function broadcastOn()
    {
        return new Channel('subject.' . $this->homework->subject->id);
    }
}

Вот как я запускаю его в своем контроллере:

$homework = new Homework([
        'subject_id' => $request->subject_id,
        'user_id' => auth()->user()->id, 
        'title' => $request->name,
        'image' => $path,
        'description' => $request->description,
        'duedate' => $request->date
        ]);

        $homework->save();

        event(new HomeworkCreated($homework));

Теперь, как мы видим, он возвращается на канал, который на моем Laravel эхо-сервере отображается как:

Channel: homewrk_database_subject.9 // This confuses me a bit
Event: App\Events\HomeworkCreated

Когда я говорю «это меня смущает», я имею в виду, что я действительно не знаю, является ли маршрут буквально это, так что теперь мы подошли к моему интерфейсу (реагировать-native):

render() {

        const echo = new Echo({
            host: 'ws://127.0.0.1:6001',
            broadcaster: 'socket.io',
            client: Socketio,
          });

          echo
            .channel('homewrk_database_subject.', this.props.navigation.getParam('id'))
            .listen('HomeworkCreated', ev => this.homeworks.push(ev)); // trying to add the response to the array.

Этот код находится прямо перед return, так как это класс, а не функциональный компонент.

Моя цель - показать добавление новой модели в массив извлеченных элементов, чтобы отобразить ее

1 Ответ

0 голосов
/ 21 июня 2020

Хост в вашей конфигурации: host: 'ws: //127.0.0.1: 6001', запоминающее устройство 127.0.0.1 предназначено для локального хоста (собственного устройства), тогда, когда вы используете «127.0.0.1», вы сказали, что подключитесь к своему self на устройстве или в эмуляторе, где вы запускаете свое приложение React Native, но помните, что Laraver Echo Server не запускается на вашем устройстве, он запускается на «сервере» вашего «pc / ma c», тогда вам нужно использовать сетевой IP-адрес вашего компьютера / ma c вместо 127.0.0.1

...