Мое текущее приложение использует Akamai (SSL) + HAProxy (SSL) + NodeJS ( socket.io ).
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Socket IO Testing</title>
</head>
<body>
<div>
<h3>Request</h3>
<span id="socketId"></span>
</div>
<div>
<h3>Response</h3>
<span id="responseText"></span>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
<script>
var socket = io.connect("https://host_name_here");
socket.on('ConnectionEstablished', function(data) {
document.getElementById("socketId").innerText = JSON.stringify({socketId:socket.id,text:"Socket Connected successfully"});
document.getElementById("responseText").innerText = "";
console.log("Connection established successfully");
});
socket.io.on("connect_error",function (err) {
console.log("Connection Error : " + err);
});
</script>
</body>
</html>
app.js
const express = require("express");
const app = express();
const socket-io = require('socket.io');
app.use(express.static("index.html");
const server = app.listen(8000,function () {
log.info(`express server run on port 8000`);
});
const io = socket-io.listen(server);
io.on("connection",function(){
console.log("socket connection established ");
});
Когда запрос поступает непосредственно на HAProxy, а затем передается на внутренний сервер ( nodejs + socket.io ), приложение может создать соединение через веб-сокет через wss.
Проблема возникает, когда запрос поступает на Akamai, а затем перенаправляется на HAProxy, а затем на внутренний сервер ( nodejs + socket.io ), приложение выдает ошибку с завершением SSL.
Точное сообщение об ошибке: Подключение WebSocket к 'wss://{{host_domain_name}}/socket.io/?EIO=3&transport=websocket&sid=4rBehZxSnWwPsbiXAACV' не удалось: ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 400
Невозможно понять, что пошло не так, когда запрос поступает на Akamai.
оцените любую помощь или руководство.
Спасибо.