WebSocket客户端获取到200响应码

3

我有一个 Node.js 服务器,可以在同一端口上提供 HTTP 和 WebSocket 服务。在本地主机上设置正常,但在部署到 Amazon Beanstalk(具有负载均衡器和 Nginx)时,WebSocket 客户端在建立 WebSocket 连接时会抛出错误:“意外的响应代码200”。我不确定这个问题,但我认为这是因为 Node.js 服务器将 WebSocket 握手请求错误地识别为 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和负载均衡器?

1个回答

0

通常在Node.js托管服务中,他们会提供一个环境变量,该变量会在启动您的应用程序时由他们动态创建 - 这是很典型的:

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

所以,如果没有环境变量的情况下本地启动它,它将只使用您喜爱的 1337


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接