Websocket客户端正在获取200个响应代码



我有一个nodejs服务器,可以在同一端口上为http和websocket提供服务。该设置在localhost上运行良好,但当部署在Amazon Beanstalk(它有一个负载均衡器和nginx)上时,ws客户端在建立ws连接时会抛出一个错误:"意外响应代码200"。我不能100%确定这一点,但我认为这是因为nodejs服务器不知何故将ws握手请求错误为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和负载均衡器?

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

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

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

相关内容

  • 没有找到相关文章

最新更新