Я пытаюсь проксировать веб-сокет с помощью angular CLI, но это не работает.
Вот моя конфигурация прокси proxy.conf.json
{
"/stream/*": {
"target": "ws://demos.kaazing.com/echo",
"secure": false,
"ws": true
}
}
Я запускаю сервер со следующими параметрами
"serve": {
"port": 5000,
"host": "0.0.0.0"
}
Пример HTML-кода:
<!DOCTYPE html>
<html lang = "en">
<head>
<!-- Required meta tags -->
<meta charset = "utf-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Page Title</title>
<!-- Bootstrap CSS -->
<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity = "sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin = "anonymous">
</head>
<body>
<h1>Hello, world!</h1>
<script>
var socket = new WebSocket("ws://localhost:5000/stream/");
// var socket = new WebSocket("ws://demos.kaazing.com/echo");
socket.onopen = function() {
console.info("Соединение установлено.");
};
socket.onclose = function(event) {
if (event.wasClean) {
console.info('Соединение закрыто чисто');
} else {
console.info('Обрыв соединения'); // например, "убит" процесс сервера
}
console.info('Код: ' + event.code + ' причина: ' + event.reason);
};
socket.onmessage = function(event) {
console.info("Получены данные " + event.data);
};
socket.onerror = function(error) {
console.info("Ошибка " + error.message);
};
</script>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src = "https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity = "sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin = "anonymous"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity = "sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin = "anonymous"></script>
<script src = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity = "sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin = "anonymous"></script>
</body>
</html>
У меня ошибка вроде
test.html:16 WebSocket connection to 'ws://localhost:5000/stream/' failed: Connection closed before receiving a handshake response
Этот закрытый вопрос: Angular CLI: прокси-сервер с proxy.conf.json мне не помог.
Я не использую https





Я нашел ответ. Я добавил параметры pathRewrite и changeOrigin в proxy.conf.json.
{
"/stream": {
"target": "ws://demos.kaazing.com/echo",
"secure": false,
"ws": true,
"logLevel": "debug",
"changeOrigin": true,
"pathRewrite": {
"^/stream": ""
}
}
}
Вы используете
https?