akamai + haproxy + nodejs (socket.io)

Мое текущее приложение использует 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.

оцените любую помощь или руководство.

Спасибо.


person front_end_dev    schedule 22.03.2018    source источник


Ответы (1)


Официальной документации по веб-сокетам на Akamai нет. Я не думаю, что akamai поддерживает веб-сокет на данный момент. Нашел это в одной из веток форума akamai.

В настоящее время мы можем поддерживать пробные версии WebSocket, но не рабочий трафик. Вскоре мы сообщим сроки полной поддержки WebSocket. Текущие альтернативы — запустить ваше приложение WebSocket через ускоритель IP-приложений Akamai или просто вернуться к длительному опросу, который обычно встроен в приложения WebSocket.

Akamai не ответил на последний комментарий в этой ветке. (17 августа).

Я не думаю, что это связано с завершением SSL. Я не смог установить сокетное соединение (ws вместо wss) даже на http

person Aakash Agarwal    schedule 04.04.2018
comment
Akamai поддерживает протокол веб-сокетов. Что мы делаем неправильно, так это не включить (протокол websocket) его в конце akamai, поскольку по умолчанию он разрешает только протокол http. - person front_end_dev; 12.05.2018