gpt4 book ai didi

amazon-web-services - 应用程序负载平衡器是否支持WebSocket?

转载 作者:行者123 更新时间:2023-12-03 11:36:28 26 4
gpt4 key购买 nike

我有一个Elastic Beanstalk应用程序,该应用程序最初配置为使用经典负载均衡器。我发现这在通过WebSocket连接时导致错误。因此,我被配置为使用应用程序负载平衡器代替应用程序,因为有人告诉我ALB支持WebSockets。但是,似乎它们并没有:当尝试通过WebSocket连接到我的ALB时,出现完全相同的错误。

ALB实际上支持WebSocket吗? AWS文档与此矛盾。 This page说它仅支持HTTP和HTTPS。没有设置ALB以支持WebSocket的指南。

最佳答案

我能够使WebSocket与新的应用程序负载平衡器(ALB)一起使用。

首先,为您的ALB创建一个新的目标组。该目标组应该使用与您的应用程序相同的端口,并且需要配置运行状况检查。但是,主要区别在于必须启用“粘性”。

Add Target Group with Stickiness

接下来,将新的侦听器规则添加到您的ALB。此规则必须具有用于路由WebSocket设置的路径-/socket.io。另外,将“目标组名称”设置为刚创建的目标组。

Add Listen rule for WebSocket

我正在为服务器使用Node / Hapi / Socket.io(在从Amazon Linux AMI派生的实例上运行)。基本设置是:

const hapi = require('hapi');
const websocket = require('./WebSocket');

var server = new hapi.Server();
server.connection(config.Application);
websocket.Initialize(server.listener);

WebSocket.js在哪里
var io = null;

module.exports = {

Initialize: function (http) {

io = require('socket.io')(http);

io.on('connection', function (socket) {
console.log('Websocket ' + socket.id + ' connected.');

socket.on('disconnect', function () {
console.log('Websocket ' + socket.id + ' disconnected.');
});
});
}
};

我正在使用带有socket.io-client的Angular 1.5x客户端。如下配置WebSocket客户端选项很重要,否则您将无法连接。
(function () {

'use strict';

angular
.module('XXXXX', [])
.run(runHandler);

runHandler.$inject = ['WebSocketService'];

function runHandler(WebSocketService) {
WebSocketService.Initialize();
}
})();

WebSocket服务:
(function () {

'use strict';

angular
.module('XXXXX')
.factory('WebSocketService', WebSocketService);

WebSocketService.$inject = [];

function WebSocketService() {

var socket = null;

function initialize() {

var url = 'http://' + ALB_URL + ':5800';

socket = io(url, {transports: ['websocket'], upgrade: false});

socket.on('connect', function () {
console.log('Socket connected');
});

socket.on('disconnect', function () {
console.log('Socket disconnected');
});
}

return {
Initialize: initialize
};
}
})();

关于amazon-web-services - 应用程序负载平衡器是否支持WebSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39336033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com