После отключения света в доме перестал работать pusher
Сидел допиливал чат по гайду знакомого, вдруг отрубили свет, после включения в браузере начали выскакивать подобные ошибки:
WebSocket connection to 'wss://ws-${pusher_app_cluster}.pusher.com/app/$%7BPUSHER_APP_KEY%7D?protocol=7&client=js&version=8.4.0-rc2&flash=false
POST https://sockjs-${pusher_app_cluster}.pusher.com/pusher/app/$%7BPUSHER_APP_K…v/xhr_streaming?protocol=7&client=js&version=8.4.0-rc2&t=1718132213089&n=1 net::ERR_NAME_NOT_RESOLVED
Не знаю какие именно файлы предоставлять, вот файл env:
APP_NAME=ArtMotion
APP_ENV=local
APP_KEY=base64:O0fI0HeAxv8yn2+oGNDtBtnRZjTktHEGcrnlhpDjKzA=
APP_DEBUG=true
APP_URL=http://art-motion.su
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=art_motionru
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.mail.ru
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=AAy0T1qxtRJ9kYqh57ym
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="admin"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=1818025
PUSHER_APP_KEY=08a0987f189d01641297
PUSHER_APP_SECRET=f533533a302b8634d0d2
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=eu
VITE_APP_NAME="${APP_NAME}"
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Вот скрипт чата, который я делал:
<script type="module">
document.addEventListener("DOMContentLoaded", function() {
let isOwnMessage = false;
const sendButton = document.getElementById("send-button");
const messageInput = document.getElementById("message-input");
const chatWindow = document.getElementById("chat-window");
const chooseFileButton = document.getElementById("choose-file-button");
const fileInput = document.getElementById("file-input");
fetch('/get-messages')
.then(response => response.json())
.then(data => {
data.forEach(message => {
const messageElement = document.createElement("div");
const messageContent = document.createElement("div");
if (message.user.id === currentUserId) {
messageElement.classList.add("message", "sent");
messageContent.classList.add("message-content", "own-message");
} else {
messageElement.classList.add("message", "received");
messageContent.classList.add("message-content");
}
messageContent.innerHTML = `<p>${message.user.name}: ${message.message}</p>`;
messageElement.appendChild(messageContent);
chatWindow.appendChild(messageElement);
chatWindow.scrollTop = chatWindow.scrollHeight;
});
});
sendButton.addEventListener("click", function() {
const messageText = messageInput.value.trim();
if (messageText !== "") {
const messageElement = document.createElement("div");
const messageContent = document.createElement("div");
messageElement.classList.add("message", "sent");
messageContent.classList.add("message-content", "own-message");
messageContent.innerHTML = `<p>${authUserName}: ${messageText}</p>`;
messageElement.appendChild(messageContent);
chatWindow.appendChild(messageElement);
chatWindow.scrollTop = chatWindow.scrollHeight;
fetch('/send-message', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
},
body: JSON.stringify({ message: messageText })
});
messageInput.value = "";
isOwnMessage = true;
}
});
messageInput.addEventListener("keypress", function(event) {
if (event.key === "Enter") {
sendButton.click();
}
});
chooseFileButton.addEventListener("click", function() {
fileInput.click();
});
fileInput.addEventListener("change", function() {
const file = fileInput.files[0];
if (file) {
const messageElement = document.createElement("div");
messageElement.classList.add("message", "sent");
const messageContent = document.createElement("div");
messageContent.classList.add("message-content");
messageContent.innerHTML = `<p>Файл: ${file.name}</p>`;
messageElement.appendChild(messageContent);
chatWindow.appendChild(messageElement);
chatWindow.scrollTop = chatWindow.scrollHeight;
}
});
window.Echo.private('chat')
.listen('MessageSent', (e) => {
if (!isOwnMessage) { // Проверка флага
const messageElement = document.createElement("div");
messageElement.classList.add("message", "received");
const messageContent = document.createElement("div");
messageContent.classList.add("message-content");
messageContent.innerHTML = `<p>${e.user}: ${e.message}</p>`;
messageElement.appendChild(messageContent);
chatWindow.appendChild(messageElement);
chatWindow.scrollTop = chatWindow.scrollHeight;
}
isOwnMessage = false;
});
});
</script>
<script>
const currentUserId = <?php echo auth()->id(); ?>;
const authUserName = "<?php echo auth()->user()->name; ?>";
</script>
Вот код контроллера:
class ChatController extends Controller
{
public function sendMessage(Request $request)
{
$request->validate([
'message' => 'required|string'
]);
if (!auth()->check()) {
return response()->json(['error' => 'Unauthenticated'], 401);
}
$message = Message::create([
'user_id' => auth()->id(),
'message' => $request->message
]);
broadcast(new MessageSent($message->load('user')))->toOthers();
return response()->json(['status' => 'Message Sent!']);
}
public function getMessages()
{
$messages = Message::with('user')->get();
return response()->json($messages);
}
}
В самом пушере на странице приложения перестали регистрироваться подключения, показываются только сообщения:
Ну и соответственно сообщения в лайве не отображаются, только после обновления страницы, так как они заносятся в базу данных. Буду рад любой помощи, готов отблагодарить материально, если проблема по итогу будет решена
Ответы (1 шт):
Если ОС - Windows, то:
Очистите DNS, сбросьте Winsock, а затем сбросьте TCP / IP, обновите IP-адреса:
Нажмите кнопку «Пуск» и введите «командная строка» в поле. В появившихся результатах поиска щёлкните правой кнопкой мыши Командную строку и выберите параметр «Запуск от имени администратора».
После открытия командной строки необходимо ввести эту команду: ipconfig
/flushdnsПерезагрузите компьютер.
Если не помогло, нужно ввести эти команды по очереди (для того, чтобы обновить IP-адреса): ipconfig/release ipconfig /renew
Перезагрузите компьютер.
Если проблема не решилась - нужно сбросить Winsock (перед этим лучше всего создать точку восстановления системы): netsh winsock reset
Перезагрузите компьютер.
Если н помогло, можно еще из консоли Администратора сбросить настройки TCP: netsh int ip reset