• 13-12-2020, 14:36:31
    #1
    Merhabalar,kodum aşşağıdaki şekilde sorunu bir türlü bulamadım yardımcı olabilicek var mı ?
    [ÇÖZÜLDÜ]
    Laravel Echo yerine pusher js'in 4.3 versiyon sdk sını kullanınca stabil şekilde çalıştı herkese teşekkürler
    app.js
    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,
    
    });
    
    window.Echo.channel('watchpost').listen('watch.post',(e)=>{
        console.log(e);
    });
    WatchPost Eventi
    
    namespace App\Events;
    
    use App\PostModel;
    use Illuminate\Broadcasting\Channel;
    use Illuminate\Broadcasting\InteractsWithSockets;
    use Illuminate\Broadcasting\PresenceChannel;
    use Illuminate\Broadcasting\PrivateChannel;
    use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
    use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
    use Illuminate\Foundation\Events\Dispatchable;
    use Illuminate\Queue\SerializesModels;
    
    class WatchPost implements ShouldBroadcast
    {
        use Dispatchable, InteractsWithSockets, SerializesModels;
    
        /**
         * Create a new event instance.
         *
         * @return void
         */
        public $id;
        public function __construct($id)
        {
            $this->id=$id;
        }
        public function broadcastAs()
        {
            return 'watch.post';
        }
        public function broadcastWith()
        {
    
            return ['post' => PostModel::where('id',$this->id)->first()];
        }
        /**
         * Get the channels the event should broadcast on.
         *
         * @return \Illuminate\Broadcasting\Channel|array
         */
        public function broadcastOn()
        {
            return new Channel('watchpost');
        }
    }
    Controller Kısmı
    broadcast(new WatchPost($id))->toOthers();
    websockets.php
    use BeyondCode\LaravelWebSockets\Dashboard\Http\Middleware\Authorize;
    
    return [
    
        /*
         * Set a custom dashboard configuration
         */
        'dashboard' => [
    
            'port' => env('LARAVEL_WEBSOCKETS_PORT'),
        ],
    
        /*
         * This package comes with multi tenancy out of the box. Here you can
         * configure the different apps that can use the webSockets server.
         *
         * Optionally you specify capacity so you can limit the maximum
         * concurrent connections for a specific app.
         *
         * Optionally you can disable client events so clients cannot send
         * messages to each other via the webSockets.
         */
        'apps' => [
            [
                'id' => env('PUSHER_APP_ID'),
                'name' => env('APP_NAME'),
                'key' => env('PUSHER_APP_KEY'),
                'secret' => env('PUSHER_APP_SECRET'),
                'encrypted'=>true,
                'path' => env('PUSHER_APP_PATH'),
                'capacity' => null,
    
                'enable_client_messages' => true,
                'enable_statistics' => true,
                'curl_options' => [
                    CURLOPT_SSL_VERIFYHOST => 0,
                    CURLOPT_SSL_VERIFYPEER => 0,
                ]
            ],
        ],
    
        /*
         * This class is responsible for finding the apps. The default provider
         * will use the apps defined in this config file.
         *
         * You can create a custom provider by implementing the
         * `AppProvider` interface.
         */
        'app_provider' => BeyondCode\LaravelWebSockets\Apps\ConfigAppProvider::class,
    
        /*
         * This array contains the hosts of which you want to allow incoming requests.
         * Leave this empty if you want to accept requests from all hosts.
         */
        'allowed_origins' => [
            //
        ],
    
        /*
         * The maximum request size in kilobytes that is allowed for an incoming WebSocket request.
         */
        'max_request_size_in_kb' => 250,
    
        /*
         * This path will be used to register the necessary routes for the package.
         */
        'path' => 'admin/web-socket',
    
        /*
         * Dashboard Routes Middleware
         *
         * These middleware will be assigned to every dashboard route, giving you
         * the chance to add your own middleware to this list or change any of
         * the existing middleware. Or, you can simply stick with this list.
         */
        'middleware' => [
            'web',
    
        ],
    
        'statistics' => [
            /*
             * This model will be used to store the statistics of the WebSocketsServer.
             * The only requirement is that the model should extend
             * `WebSocketsStatisticsEntry` provided by this package.
             */
            'model' => \BeyondCode\LaravelWebSockets\Statistics\Models\WebSocketsStatisticsEntry::class,
    
            /**
             * The Statistics Logger will, by default, handle the incoming statistics, store them
             * and then release them into the database on each interval defined below.
             */
            'logger' => BeyondCode\LaravelWebSockets\Statistics\Logger\HttpStatisticsLogger::class,
    
            /*
             * Here you can specify the interval in seconds at which statistics should be logged.
             */
            'interval_in_seconds' => 60,
    
            /*
             * When the clean-command is executed, all recorded statistics older than
             * the number of days specified here will be deleted.
             */
            'delete_statistics_older_than_days' => 60,
    
            /*
             * Use an DNS resolver to make the requests to the statistics logger
             * default is to resolve everything to 127.0.0.1.
             */
            'perform_dns_lookup' => false,
        ],
    
        /*
         * Define the optional SSL context for your WebSocket connections.
         * You can see all available options at: http://php.net/manual/en/context.ssl.php
         */
        'ssl' => [
            /*
             * Path to local certificate file on filesystem. It must be a PEM encoded file which
             * contains your certificate and private key. It can optionally contain the
             * certificate chain of issuers. The private key also may be contained
             * in a separate file specified by local_pk.
             */
            'local_cert' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT', null),
    
            /*
             * Path to local private key file on filesystem in case of separate files for
             * certificate (local_cert) and private key.
             */
            'local_pk' => env('LARAVEL_WEBSOCKETS_SSL_LOCAL_PK', null),
    
            /*
             * Passphrase for your local_cert file.
             */
            'passphrase' => env('LARAVEL_WEBSOCKETS_SSL_PASSPHRASE', null),
        ],
    
        /*
         * Channel Manager
         * This class handles how channel persistence is handled.
         * By default, persistence is stored in an array by the running webserver.
         * The only requirement is that the class should implement
         * `ChannelManager` interface provided by this package.
         */
        'channel_manager' => \BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManagers\ArrayChannelManager::class,
    ];
    broadcoasting.php
    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
          'cluster' => "eu",
           'encrypted' => false,
           'host' => '127.0.0.1',
           'port' => 6001,
           'scheme' => 'http',
    
        ],
    ],
    channels.php
    Broadcast::channel('watchpost',function (){
        return true;
    });
  • 13-12-2020, 14:41:22
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Laravel'e çok hakim değilim ancak PHP ile websocket kullanmak native olarak desteklemediği için biraz problemli oluyor. Tavsiyem WS kısmını tamamen node.js ile halletmeniz. Kullanıcı tarafından veri göndermeyi AJAX ile app.js'e POST işlemi ile yapabilirsiniz. app.js'te bir API oluşturup POST isteklerini alıp tekrar kullanıcılara yayınlarsınız.
  • 13-12-2020, 14:42:33
    #3
    bybrown adlı üyeden alıntı: mesajı görüntüle
    Laravel'e çok hakim değilim ancak PHP ile websocket kullanmak native olarak desteklemediği için biraz problemli oluyor. Tavsiyem WS kısmını tamamen node.js ile halletmeniz. Kullanıcı tarafından veri göndermeyi AJAX ile app.js'e POST işlemi ile yapabilirsiniz. app.js'te bir API oluşturup POST isteklerini alıp tekrar kullanıcılara yayınlarsınız.
    laravel nodejs kullanmakta
  • 13-12-2020, 14:44:31
    #4
    bybrown adlı üyeden alıntı: mesajı görüntüle
    Laravel'e çok hakim değilim ancak PHP ile websocket kullanmak native olarak desteklemediği için biraz problemli oluyor. Tavsiyem WS kısmını tamamen node.js ile halletmeniz. Kullanıcı tarafından veri göndermeyi AJAX ile app.js'e POST işlemi ile yapabilirsiniz. app.js'te bir API oluşturup POST isteklerini alıp tekrar kullanıcılara yayınlarsınız.
    Sorun tam olarak şu aslında websocket'in kendi client'ında veriler geliyor fakat benim app.js de yazdığım listen çalışmıyor
  • 13-12-2020, 14:45:32
    #5
    alicemalturan1 adlı üyeden alıntı: mesajı görüntüle
    laravel nodejs kullanmakta
    Tamam ben de size Laravel'i karıştırmayın diyorum. Gösterdiğiniz kodlarda node.js ile bir WS istemcisi uygulanmamış, PHP tarafında herhangi bir WS işlemi yapmamanızı tavsiye ediyorum; dinleme, yayınlama ve istemci işlerini node.js ve JS ile halledin, socket.io kullanarak. PHP'nin WS konusunda tutarlı bir çözümü yok ne yazık ki Laravel de olsa taklitten ibaret.
  • 13-12-2020, 14:47:38
    #6
    bybrown adlı üyeden alıntı: mesajı görüntüle
    Tamam ben de size Laravel'i karıştırmayın diyorum. Gösterdiğiniz kodlarda node.js ile bir WS istemcisi uygulanmamış, PHP tarafında herhangi bir WS işlemi yapmamanızı tavsiye ediyorum; dinleme, yayınlama ve istemci işlerini node.js ve JS ile halledin, socket.io kullanarak. PHP'nin WS konusunda tutarlı bir çözümü yok ne yazık ki Laravel de olsa taklitten ibaret.
    Socket.io ile deniyeceğim teşekkürler
  • 13-12-2020, 14:49:10
    #7
    bende broadcasting üzerinde dökümantelerini okumaya devam ediyorum hocam muhtemelen aynı şey üzerindeyiz çözüme ulaşmama fazla kalmadı benim sizi bilgilendireceğim bittiğinde.
  • 13-12-2020, 14:50:13
    #8
    TekstilTurkiye adlı üyeden alıntı: mesajı görüntüle
    bende broadcasting üzerinde dökümantelerini okumaya devam ediyorum hocam muhtemelen aynı şey üzerindeyiz çözüme ulaşmama fazla kalmadı benim sizi bilgilendireceğim bittiğinde.
    Beklemedeyim teşekkürler
  • 13-12-2020, 17:04:09
    #9
    Üyeliği durduruldu
    Aldiginiz hata mesaji/kodu nedir?