Я работаю над проектом с Angular и Node.js, где использую socket.io (v3.1.0). Проблема в том, что соединение между сервером и клиентом никогда не обновляется с опроса на веб-сокеты, хотя я вижу в веб-консоли, что запрос на обновление соединения отправляется и Получен код ответа 101 с переключением протоколов.
Вот код конфигурации socket.io на сервере:
const app = express();
const server = await app.listen(port);
const test = io.of('/api/test');
test.on('connect', socket => {
console.log("Connected");
});
io.listen(server,
{
cors: {
origin: "*",
methods: ["GET", "POST"],
allowedHeaders: ["content-type"],
credentials: true
}
});
Код клиента:
this.socket = io("/api/test")
this.socket.on('connect', () => {
console.log("Connected");
});
Файл конфигурации прокси:
"/sock/*": {
"target": "http://localhost:3000/socket.io/",
"logLevel": "debug"
}
Еще одна вещь, которую я хотел бы добавить, это то, что если я изменю прокси-файл на это:
"/sock/*": {
"target": "http://localhost:3000/socket.io/",
"logLevel": "debug",
"ws": true
}
Теперь в хроме работает только с ws (как и ожидалось), но не работает на мозилле (постоянно обновляет страницу и выдает ошибку).
Итак, вопрос: кто-нибудь знает, почему он не будет автоматически обновляться до веб-сокетов? Из того, что я понимаю, он должен сначала отправить http-запрос для рукопожатия, но после этого он должен обновиться до веб-сокетов по умолчанию, я ошибаюсь?