我有一个 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和负载均衡器?