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