Ho osservato gli esempi node.js e socket.io per tutto il pomeriggio e sto provando a mettere insieme una semplice pagina che mi dirà quanti utenti ho collegato al server.nodejs socket.io non può connettersi al server?
Ho letto la documentazione allo http://socket.io/ e alcuni tutorial/domande che descrivono esattamente ciò che sto cercando di fare. Ho anche trovato create simple node js server and client che non mi aiuta.
Informazioni sulla versione:
node.js - 0.6.15
express - 3.0.0alpha1
socket.io - 0.9.5 (socket.io-cliente è la stessa versione, tuttavia, non lo fa trovare la risorsa ... vedi commenti)
ejs - 0.7.1
Ecco il mio codice del server:
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);
Ecco il mio codice 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>
Ecco cosa sta succedendo quando ho eseguito il server, e connettersi con il cliente.
$ node server.js
info - socket.io started
poi quando naviga verso localhost: 4000 con il mio browser web ottengo la pagina con '0' (number_of_connections). Inoltre, non vedo nulla nel terminale per il server (l'on. (La "connessione" non viene mai colpita)
Sul client, dopo un secondo o due, comincio a ottenere un numero enorme di errori (se io lasciare la console aperta per alcuni secondi si blocca pagina) vedi immagine qui sotto:!
prega, di aiuto con dove cominciare per il debug di questo sarebbe apprezzato voglio solo ottenere questo esempio di base su e in esecuzione in modo da poter iniziare a giocare con/capire nodejs e socket.io!
Un buon punto di partenza sarebbe la versione del nodo e la versione socket.io. Vedo quella versione di cdn.socket.io in 0.6. Vedo che sto usando socket.io 0.8.7 con il nodo v0.6.4, per esempio. Inoltre, c'è una ragione per cui non sei andato con ''? Potresti provare e vedere se il risultato è diverso (in quanto ciò ignorerebbe la possibilità di errori di versione) – Kato
'Impossibile caricare la risorsa: il server ha risposto con uno stato di 404 (non trovato) http: // localhost: 4000/socket.io/socket.io.js' – rlemon
Hm, è strano. Il mio funziona fuori dagli schemi, ovviamente, quindi non posso essere di grande aiuto sul motivo per cui non è possibile utilizzare l'URL socket.io locale. A proposito, la mia versione di socket.io-client è 0.8.7 (lo stesso di socket.io) - mi chiedo se questo è importante ... – Kato