В первой части забыл упомянуть один момент. Чтобы ваша команда
php artisan push_server:serve
запускалась, ее надо прописать в классе Kernel в файле app/Console/Kernel.php
protected $commands = [ \App\Console\Commands\PushServer::class, ];
Далее. Если ваш сервер ВНЕЗАПНО упал, можно его конечно перезапустить вручную. Но мы же программисты! Так что давайте автоматизировать. Изменим немного клиентский код:
let conn = new ab.connect( 'ws://' + ip + ':8080', function (session) { session.subscribe('onNewData', function (topic, data) { notification(data.data); }); }, function (code, reason, detail) { console.warn('Websocket connection closed! Code = ' + code + '; Reason = ' + reason + '; Detail = ' + detail + ';'); restartPushServerAjax(); //Добавили вот эту строчку }, { 'maxRetries' : 60, 'retryDelay' : 4000, 'skipSubprotocolCheck': true } );
function restartPushServerAjax(){ ajaxSetup(); $.ajax({ url : "/restartPushServerAjax/", dataType: "json", success : function (data) { console.log(data); }, error : function (jqxhr, status, errorMsg) { ajaxErrorsHandling(jqxhr, status, errorMsg); } }); }
И пропишем роут для этой функции:
Route::get('/restartPushServerAjax/', function () { $restart = Artisan::call('push_server:serve'); if ($restart) { echo json_encode(['success' => 'Server restarted']); } else { echo json_encode(['fail' => 'Error occurred']); } });
А вот интересно вы играли в онлайн шарики на З-Гэйм? Советую сделать это немедленно. Самые красивые логические игры шарики собраны на Z-GAME. Ты когда-нибудь плакал от счастья?
Вспоминая наш день или ночь.
Чтобы не было сил превозмочь
Эту слабость в ногах и запястьях.
Каждый час утопаю в тебе,
Запах твой не смывается мылом.
Ну, скажи, Боже, что это было?!
Голос, губы твои в тишине.
Я закрою глаза и дышу
Волосами в дыму сигареты.
Мои руки твоими согреты
И реальности не нахожу.
Я сама себе позавидую.
Слезы счастья сегодня впервые.
А потом улыбнусь в перерыве:
Это ж надо Тебя вот так выдумать...