I've suddenly see these errors pop-up in my console:
Access to XMLHttpRequest at 'http://sockjs.pusher.com/pusher/app/my-key/239/2b418tpp/xhr?protocol=7&client=js&version=4.4.0&t=1556704320239&n=2' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
OPTIONS http://sockjs.pusher.com/pusher/app/my-key/239/2b418tpp/xhr?protocol=7&client=js&version=4.4.0&t=1556704320239&n=2 404 (Not Found)
ws://localhost:6001/app/my-key?protocol=7&client=js&version=4.4.0&flash=false' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
wss://localhost/app/my-key?protocol=7&client=js&version=4.4.0&flash=false' failed: Error during WebSocket handshake: Unexpected response code: 404
Those 4 keep coming back on each retry.
Here's my broadcasting.php
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'http'
],
],
And bootstrap.js Echo configuration:
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wsPort: 6001,
disableStats: true,
});
Any idea if this is something I would've broken myself? Only thing I recall doing which could lead to issues is that I updated my composer dependencies together with Laravel 5.8.
If I just run php artisan serve & php artisan websocket:serve locally the connections work. I'll try to figure it out and get back here with a solution once I'm done.
The issue above happens on homestead and on live ubuntu.
@aFluxx
its nearly the same issue, as we are investigate with the pusher-js reconnection issue.
https://github.com/beyondcode/laravel-websockets/issues/163
You can deny to connect (frontend client -> websocket:server) with the sockjs protocoll,
when you extend your config inside your bootstrap.js with:
disableStats: true,
enabledTransports: ['ws', 'wss'],
disabledTransports: ['sockjs', 'xhr_polling', 'xhr_streaming']
.. good to know, because it is maybe strongly depending / happening on the 4.4.0 version from pusher-js, as i see in your protocoll .. that it happens now, after you "composed" .. .. It seems that version 4.3.1 didnt have this issue (may other issues ;-) )
addendum:
i tried the 4.3.1 .. no success .. (but my issue was not only the console-errors .. it was the not working reconnection (see issue 163)).
I will try downgrading to 4.3.1 later today, I'll keep you in the loop.
Hello @ibrainventures
I tried downgrading to 4.3.1 without success. The errors remain:
WebSocket connection to 'ws://localhost:6001/app/my-key?protocol=7&client=js&version=4.3.1&flash=false' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
app.js:68099 WebSocket connection to 'wss://localhost/app/my-key?protocol=7&client=js&version=4.3.1&flash=false' failed: Error in connection establishment: net::ERR_CERT_AUTHORITY_INVALID
I've done some more digging and the problem seems to appear when running via localhost:3000. This is from browsersync. If I just go the my website via mywebsite.test, which is linked to 192.168.10.10 in my hosts file the websockets seem to be working.
Is anyone else experiencing issues with localhost?
it seems i have same problem, but not with localhost.
I have 2 apps now, one using laravel 5.7 and other 5.8
So with 5.7 no problems, but 5.8 gives (Opcode -1) response...
It seems some problem with certificates, but both apps share same one
Problem appeared after upgrading to 5.8, before worked like a charm
Maybe @mpociot or @freekmurze can give some advise how to debug this kind of problem? Would really appreciate
Just for testing i've installed Laravel Valet, and got working API server behind HTTPS, so localy my app on Laravel 5.8 works.
Got me thinking maybe on stage server it's not working coz stage and prod share same certificates?
All certs generated by Let's encrypt
I have same issue in both laravel 5.7 and laravel 5.8. It works locally with no ssl certificate but on production which contains let's encrypt certificate i get same error. I think it's going to pusher server instead of local server. I don't know how to fix it.
I had this error, and I just switched my network type from public to private and it started working again. Maybe it's a firewall issue as suggested here? https://github.com/beyondcode/laravel-websockets/issues/125
is this resolved yet?
@r00nscapenab i had make it work with this config (config/broadcasting.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' => env('PUSHER_APP_PORT', 6001),
'scheme' => env('PUSHER_APP_SCHEME', 'http'),
'curl_options' => [
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
]
],
],
Setting 'encrypted' => false helped
@SergeyMiracle can i see your websockets.php?
@r00nscapenab
<?php
use BeyondCode\LaravelWebSockets\Dashboard\Http\Middleware\Authorize;
return [
/*
* 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 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'),
'enable_client_messages' => false,
'enable_statistics' => false,
],
],
/*
* 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' => [
'localhost'
],
/*
* 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' => 'ws',
/*
* 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',
Authorize::class,
],
'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,
/*
* 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' => 30,
/*
* 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('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('LOCAL_PK', null),
/*
* Passphrase for your local_cert file.
*/
'passphrase' => null,
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
'verify_depth' => 0
],
/*
* 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,
];
Same issue.
Why is this closed? any solution?
Can someone provide a solution or explain what happened?
The websocket won't be able to connect and we have to restart the service
Most helpful comment
Same issue.
Why is this closed? any solution?