#node.js #websocket #socket.io
#node.js #websocket #socket.io
Вопрос:
Я застрял с более новой версией socket.io . Все было хорошо, но когда я захотел перейти на socket.io 3, все просто сломалось, и в настоящее время на клиенте я получаю код состояния HTTP 400 со следующим ответом JSON — {"code":5,"message":"Unsupported protocol version"}
Конфигурация на стороне сервера —
const io = require("socket.io")(server, {
cors: {
origin: config.clientURL,
methods: ["GET", "POST"],
credentials: true,
},
});
Конфигурация на стороне клиента —
const socket = io(backendURL, {
withCredentials: true,
});
Я перепробовал очень много вещей и много раз перераспределял, но ошибка не исчезла.
Для справки, у меня есть эти репозитории github —
Клиент в react.js
репозитории GitHub
Сервер в nodeJs
репозитории и socket.io.js
— GitHub
Ответ №1:
Похоже, может быть несоответствие между версиями вашего socket.io-клиента и сокета.сервер ввода-вывода.
Сначала обновите серверы, установив для allowEIO3 значение true (добавлено в socket.io@3.1.0 )
const io = require("socket.io")({
allowEIO3: true // false by default
});
После обновления socket.io-client (последняя версия на данный момент — 3.1.1) вы можете установить его обратно или удалить, поскольку значение по умолчанию равно false
const io = require("socket.io")({
allowEIO3: false
});
Комментарии:
1. Хотя я обновил оба до версии 3.1.1, сообщения об ошибках все еще сохранялись. Просто устранено после использования allowEIO3. Понятия не имею.
2. спасибо, сэр, вы сэкономили мне много времени
3. Я столкнулся с той же проблемой. Хотя мои клиентские и серверные версии сокетов были одинаковыми. Только что обновил обе до самой высокой из основных версий. Не уверен, что вызвало это. Разница заключалась только в том, что у меня было настроенное серверное приложение на новом экземпляре AWS, в то время как мое реагирующее приложение все еще находилось на более старом.
Ответ №2:
Я устанавливаю старую версию с помощью
npx create-nuxt-app@2.15.0
Он установит nuxt с express.js в одном проекте.
Затем обновите пакеты npm с помощью команд:
npx npm-check-updates -u
npm i
И сокет.io хорошо работает между nuxt и socket.ввод-вывод на сервере