Configure o servidor websocket no Amazon Linux AMI usando o Node.js

3

Eu tenho tido problemas por alguns dias tentando configurar um servidor websocket simples em uma instância do Amazon EC2. Eu estou usando uma micro instância do Linux. Depois de inicializar pela primeira vez, atualizei todos os pacotes do SO, este ótimo guia para obter o nó e o npm instalado , o socket.io, o express (não usado atualmente) e o websocket.io que inclui o servidor websocket por miksago .

Primeiro, minhas tentativas com o Socket.io como backend. Eu configurei um servidor simples usando o código de amostra do site deles, listado abaixo. Eu corro isso com sudo node server.js . Eu uso o sudo para que eu possa ouvir na porta 80, caso contrário os erros. A partir daqui, eu coloquei o meu DNS público amazon no campo de localização no teste de eco websocket.org. Quando pressiono connect, meu servidor gerará debug - destroying non-socket.io upgrade . Eu tenho uma saída do console dentro do ouvinte "conexão" que nunca é impresso, por isso parece que há um erro antes da solicitação de conexão passar. Pode ser que eu tenha que usar o lado do cliente socket.io para um servidor socket.io funcionar, mas não consegui encontrar nenhuma resposta definitiva sobre isso.

Minha segunda tentativa foi usar o websocket-server da Miksago. Vou listar a fonte para o servidor abaixo também. Dessa vez, consegui ver a saída do console na solicitação de conexão, mas a conexão ainda não estava estabelecida. Eu tentei imprimir o objeto connection.header, mas recebi um erro.

Estou tentando configurar um servidor simples apenas para obter o básico e não consegui definir qual é o problema. Estou usando o websocket.org para testar o servidor, já que o cliente está configurado corretamente. O que estou fazendo errado configurando o servidor?

Socket.io server
var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  console.log("Connection request on socket.io server");
});



Websocket-Server
var ws = require("websocket-server");

var server = ws.createServer();

server.addListener("connection", function(connection){
  console.log("Connection request on Websocket-Server");
});

server.listen(80);

Editar: saída de depuração do node-websocket-server. Este é um trecho da saída de console.log(connection._req); A informação parece correta, mas o servidor simplesmente não está estabelecendo a conexão.

httpVersion: '1.1',
complete: true,
headers: 
 { upgrade: 'websocket',
   connection: 'Upgrade',
   host: 'ec2-50-16-107-223.compute-1.amazonaws.com',
   origin: 'http://websocket.org',
   'sec-websocket-key': 'HdgJaiL2TZ4iyOHTarmlig==',
   'sec-websocket-version': '13' },
trailers: {},
readable: true,
url: '/',
method: 'GET',
statusCode: null,

Edit2: use o websocket.io como um servidor websocket no Node.js. Ele funciona sem a necessidade de arquivos js do lado do cliente e está mais atualizado com as especificações. Está disponível através do npm e git.

    
por brodney 03.01.2012 / 17:19

1 resposta

0

De acordo com esta pergunta do StackOverflow , você deve usar Código do lado do cliente do socket.io. Usar o código do lado do cliente do websocket.org vai lhe dar este erro.

    
por 03.01.2012 / 17:50