Angular 8 & Laravel echo websockets with socket io: клиент Socket.io не найден - PullRequest
0 голосов
/ 06 марта 2020

У меня Laravel работает локально с php artisan serve, установлен laravel -echo-сервер с npm install -g laravel-echo-server, затем я запускаю команду laravel-echo-server init, чтобы сгенерировать laravel -echo-сервер. json:

{
    "authHost": "http://localhost",
    "authEndpoint": "/broadcasting/auth",
    "clients": [],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "secureOptions": 67108864,
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": true,
        "allowOrigin": "http://localhost:8001",
        "allowMethods": "GET, POST",
        "allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
    }
}

Затем я запускаю команду laravel-echo-server start, чтобы запустить сервер, что приводит к этой консоли , затем я запускаю команду php artisan queue:listen для прослушивания очереди и, наконец, я запусти тинкер консоль для запуска моего мероприятия. Это просто базовое c событие с сообщением «test»:

<?php

namespace App\Events;

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

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

    private $message = 'test';

    /**
     * Create a new event instance.
     *
     */
    public function __construct()
    {

    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return ['test-channel'];
    }

    public function broadcastAs()
    {
        return 'test';
    }
}

In angular Я установил следующее:

this.echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001',
});

this.echo.connector.socket.on('connect', function () {
    console.log('CONNECTED');
});

this.echo.connector.socket.on('reconnecting', function () {
    console.log('CONNECTING');
});

this.echo.connector.socket.on('disconnect', function () {
    console.log('DISCONNECTED');
});

this.echo.channel('test-channel')
    .listen('.test', (data) => {
        console.log(data);
});

Однако, когда я запускаю angular клиент Я получаю следующее сообщение: Клиент Socket.io не найден

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...