He estado mirando ejemplos de node.js y socket.io toda la tarde y estoy tratando de armar una página simple que me dirá cuántos usuarios he conectado al servidor.nodejs socket.io no se puede conectar al servidor?
He leído la documentación en http://socket.io/, así como algunos tutoriales/preguntas aquí que describen exactamente lo que estoy tratando de hacer. También encontré create simple node js server and client que no me ayuda.
Información de la versión:
Node.js - 0.6.15
expreso - 3.0.0alpha1
socket.io - 0.9.5 (socket.io-cliente es la misma versión, sin embargo no lo hace encontrar los recursos ... ver comentarios)
ejs - 0.7.1
Aquí está mi código de servidor:
var express = require('express'),
config = {
port: 4000,
hostname: 'localhost'
};
var server = module.exports = express.createServer();
/* server configuration */
server.use(express.cookieParser('keyboard unicorn'));
server.use(express.bodyParser());
server.use(express.methodOverride());
server.use(express.session({ secret: 'keyboard unicorn' }));
server.engine('.html', require('ejs').__express);
server.set('views', __dirname + '/lib/views');
server.set('view options', { layout: false });
server.set('view engine', 'html');
server.use(server.router);
server.use('/', express.static(__dirname + '/lib/assets'));
var io = require('socket.io').listen(server);
var connections = { 'length': 0 };
io.sockets.on('connection', function(socket) {
socket.__fd = socket.fd;
connections[socket.__fd]=socket.remoteAddress;
++connections.length;
console.log('user connected! There are a total of ' + connections.length + ' users online.');
return socket.on('disconnect',function(){
delete conns[socket.__fd];
--connections.length;
console.log('user disconnected! There are a total of ' + connections.length + ' users remaining online.');
});
});
server.get('/', function(req, res) {
res.render('index', {
'page_title': 'sample application',
'number_of_connections': connections.length
});
});
server.listen(config.port, config.hostname);
Aquí está mi código de cliente:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><%= page_title %></title>
</head>
<body>
<div>There is a total of <%= number_of_connections %> user(s) connected.</div>
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
<script type="text/javascript">
var socket = new io.Socket('localhost',{'port':4000});
socket.connect();
socket.on('connect', function() {
console.log('connected');
});
</script>
</body>
</html>
Esto es lo que sucede cuando corro el servidor y conectar con el cliente.
$ node server.js
info - socket.io started
luego, cuando me vaya a localhost: 4000 en mi navegador web llego a la página con '0' (number_of_connections). Además, no veo nada en el terminal para el servidor (el encendido. ('Conexión' nunca se golpea).
En el cliente, después de un segundo o dos, comienzo a obtener una gran cantidad de errores (si dejar la consola abierta durante unos segundos se bloquea la página) véase más adelante la imagen:
por favor, cualquier ayuda con dónde empezar para depurar este sería apreciada sólo quiero conseguir este ejemplo básico hasta y ejecutándose para que pueda comenzar a jugar con/understanding nodejs y socket.io!
Un buen lugar para comenzar sería la versión de su nodo y la versión de socket.io. Veo la versión de cdn.socket.io en 0.6. Veo que estoy usando socket.io 0.8.7 con el nodo v0.6.4, por ejemplo. Además, ¿hay alguna razón por la que no acaba de ir con ''? Puede intentarlo y ver si el resultado es diferente (ya que eso evitaría la posibilidad de errores de versión) – Kato
'Error al cargar el recurso: el servidor respondió con un estado de 404 (No encontrado) http: // localhost: 4000/socket.io/socket.io.js' – rlemon
Hm, eso es extraño. La mía funciona de inmediato, por supuesto, así que no puedo ser de mucha ayuda sobre por qué no puedes usar la URL local de socket.io. Por cierto, mi versión socket.io-client es 0.8.7 (lo mismo que socket.io) - me pregunto si eso importa ... – Kato