В socket.io api используются веб-сокеты, но на нем также есть множество других функций, позволяющих выполнять такие действия, как HTTP-рукопожатия, идентификаторы сеансов, и даже при необходимости он может обрабатывать переходы на другие протоколы.
У вас пока есть половина проблемы.Добавляя строку socket.io/?EIO=3&transport=websocket
, вы указываете параметры для сервера socket.io для принятия.
EIO=3
указывает номер версии для engine.io, в котором используется socket.io.В этом случае вы говорите, что engine.io version = 3
transport=websocket
указывает, какой транспортный протокол использовать.Как я уже говорил ранее, socket.io использует другие протоколы в таких случаях, как аварийное переключение.Эта часть заставляет socket.io использовать websocket в качестве предпочтительного протокола.
Теперь следующая половина - это WebSocket.WebSocket допускает расширения, которые включают в себя различные виды сжатия, которые обычно используются при отправке данных.Я полагаю, именно это и является причиной вашей Parse Error
Попробуйте это ( найдено здесь ):
const WebSocket = require('ws');
const ws = new WebSocket('ws://server/socket.io/?EIO=3&transport=websocket', {
perMessageDeflate: false
});
Установив perMessageDeflate: false, вы указываете «Несжать данные ".Поскольку, как я уже сказал, это расширение WebSocket, есть и другие варианты.Попробуйте это вместо этого, если он не работает
- x-webkit-deflate-frame
- perframe-deflate
Как заявление об отказе от ответственностиисследование, которое я сделал.Я не "специалист по socket.io", поэтому, если что-то не так, пожалуйста, прокомментируйте, и я отредактирую сообщение