Websocket客户端获得200响应代码

Websocket客户端获得200响应代码,websocket,amazon-elastic-beanstalk,Websocket,Amazon Elastic Beanstalk,我有一个nodejs服务器,在同一个端口上为http和websocket提供服务。安装程序在本地主机上运行良好,但是当部署在Amazon Beanstalk(它有loadbalancer和nginx)上时,ws客户端在建立ws连接时会抛出一个错误:“意外响应代码200”。我不是100%确定这一点,但我认为这是因为nodejs服务器不知何故将ws-handshake请求误认为是http请求,因此返回200。以下是我的服务器的代码: var WebSocketServer = require('we

我有一个nodejs服务器,在同一个端口上为http和websocket提供服务。安装程序在本地主机上运行良好,但是当部署在Amazon Beanstalk(它有loadbalancer和nginx)上时,ws客户端在建立ws连接时会抛出一个错误:“意外响应代码200”。我不是100%确定这一点,但我认为这是因为nodejs服务器不知何故将ws-handshake请求误认为是http请求,因此返回200。以下是我的服务器的代码:

var WebSocketServer = require('websocket').server;
var http = require('http');
var fs = require('fs');

var indexPage = "Loading index page, try again later?";

fs.readFile('./index.html',function (err,data){
    indexPage = data;
})
var server = http.createServer(function(request, response) {
});
server.listen(1337, function() { });

// create the server
wsServer = new WebSocketServer({
    httpServer: server
});

// WebSocket server
wsServer.on('request', function(request) {
    console.dir(request);
    var connection = request.accept(null, request.origin);
    console.log("connected");
    connection.on('message', function(message) {
        if (message.type === 'utf8') {
            console.log("Received",message.utf8Data);
        }
    });
    connection.on('close', function(connection) {
    });
});

有什么建议吗?在这种情况下,我应该如何配置nginx和loadbalancer?

通常在node.js托管服务上,它们提供一个环境变量,该变量在每次启动应用程序时都会在其端动态创建-这是典型的:

var port = process.env.PORT || 1337;

然后,当在本地启动时,没有env var,它只使用您最喜欢的1337

就像上面的代码一样,我将端口固定为1337,并检查了nodejs服务器日志,没有发现任何错误。