Websocket客户端获得200个响应代码

时间:2014-11-04 12:02:59

标签: websocket elastic-beanstalk

我有一个nodejs服务器在同一个端口上同时提供http和websocket。该设置在localhost上运行正常,但是当部署在Amazon Beanstalk(具有loadbalancer和nginx)上时,ws客户端在建立ws连接时抛出错误:“意外的响应代码200”。我不是100%肯定这个,但我认为这是因为nodejs服务器以某种方式错误地将握手请求作为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?

1 个答案:

答案 0 :(得分:0)

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

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

然后在没有env var的情况下在本地启动它只使用你最喜欢的1337