Экспресс-сервер не отвечает на запросы

После отправки на сервер группы запросов POST/GET мой сервер перестает отвечать, и на вкладке сети консоли все запросы помечаются как «ожидающие».

У меня есть временные метки во время ответов, но они идут быстро и просто не запускаются, как только возникает проблема.

Разорвать:

var ip = require('ip');
var fs = require('fs');
var bodyParser = require('body-parser');
var path = require('path');
var express = require('express');
var app = express();
var expressWs = require('express-ws')(app);

var students = [];
var cons = [];

app.use(bodyParser.text({
  extended: true
}));

app.post('/add', function(req, res) {
  students.push(req.body);
  for (var i = 0; i < cons.length; i++) {
    cons[i].send(JSON.stringify(students));
  }
});
app.post('/del', function(req, res) {
  for (var i = 0; i < students.length; i++) {
    if (students[i] == req.body) {
      students.splice(i, 1);
    }
  }
  for (var i = 0; i < cons.length; i++) {
    cons[i].send(JSON.stringify(students));
  }
});
app.get('/students', function(req, res) {
  res.send(JSON.stringify(students));
});
app.ws('/mes', function(ws, req) {
  cons.push(ws);
  ws.on('close', function(req) {
    for (var i = 0; i < cons.length; i++) {
      if (cons[i] == ws) {
        cons.splice(i, 1);
      }
    }
  });
});

Отправитель:

function sendData() {
  if (okMes() == true) {
    console.info(student_i.value);
    fetch('/add', {
        method: 'POST',
        body: student_i.value
      })
      .catch(function(err) {
        console.error(err);
      });
    student_i.value = '';
  }
}

Получатель:

function placeButton(data) {
  if (data.length == 0) {
    error_p.style.display = 'block';
    error_p.innerHTML = 'No New Students';
  }
  for (var i = 0; i < 200; i++) {
    if (document.getElementById(i) != null) {
      document.getElementById(i).remove();
    }
  }
  students = [];
  for (var i = 0; i < data.length; i++) {
    student = document.createElement('button');
    student.innerHTML = data[i];
    students_d.appendChild(student);
    students.push(student);
    student.setAttribute('id', students.length - 1);
    error_p.style.display = 'none';
  }
  for (var i = 0; i < students.length; i++) {
    students[i].onclick = function() {
      for (var i = 0; i < students.length; i++) {
        if (students[i] == this) {
          students.splice(i, 1);
        }
      }
      // document.getElementById(this.getAttribute('id')).remove();
      fetch('/del', {
        method: 'POST',
        body: this.innerHTML
      });
      if (document.querySelectorAll('button') == []) {
        error_p.style.display = 'block';
        error_p.innerHTML = 'No New Students';
      }
    }
  }
}
// seting interval and fetching for '/students' and calling this func
// reciving ws.onmessage and calling this func

Я понятия не имею, почему на мои запросы не отвечают, и если бы кто-нибудь мог помочь, это было бы здорово.

Вы используете сервер с HTTPS? Попробуйте добраться до одного из маршрутов, скопировав адрес и вставив его в окно браузера. Возможно, вы увидите, что запросы блокируются из-за недействительного SSL-сертификата, и вам нужно вручную разрешить браузеру обходить защиту.

maxpaj 10.04.2019 14:38

Я не запускаю свой сервер на HTTPS, и когда я иду по этим маршрутам, я получаю ответ.

Folded-Code 10.04.2019 14:41

Что выводит консоль на стороне сервера?

maxpaj 10.04.2019 14:45

Я просто регистрирую URL-адрес, по которому он работает прямо сейчас. Если вас интересует время, когда все они произошли одновременно, и когда возникла проблема, они перестали регистрироваться. Обновлено: я сделал временные метки после каждой строки, и все это произошло, когда эта функция была вызвана, не все строки в несвязанных функциях были зарегистрированы.

Folded-Code 10.04.2019 17:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
288
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Fetch API ожидает полного url. Измените свой вызов fetch на:

// assuming you're running on localhost on port 3000
fetch('http://localhost:3000/del', {
  method: 'POST',
  body: this.innerHTML
});

Я сделал это, и не имеет значения, добавляю я это или нет.

Folded-Code 10.04.2019 17:37

какая у тебя cons[i].send?

1565986223 10.04.2019 17:40

Он отправляет данные на все соединения ws.

Folded-Code 10.04.2019 18:59

Я только что понял ответ, тестируя свой код. Оказалось, что я этого не делал res.end() при обработке почтовых запросов, и я предполагаю, что время ожидания запросов истекло.

Другие вопросы по теме