Sto cercando di iniziare con node.js e socket.io.
Ho un (molto) semplice applicazione di test client-server e non riesco a farlo funzionare.
Il sistema è configurato su una macchina Windows con un server Apache.
L'apache è in esecuzione sul port 81
e la socket.io è impostato per ascoltare port 8001
socket.io - l'evento 'connect' non viene attivato sul client
Server - server.js
var io = require('socket.io').listen(8001);
io.sockets.on('connection', function (socket) {
console.log('\ngot a new connection from: ' + socket.id + '\n');
});
client - index.html
<!DOCTYPE html>
<html>
<head>
<title>node-tests</title>
<script type="text/javascript" src="http://localhost:8001/socket.io/socket.io.js"> </script>
<script type="text/javascript">
var socket = io.connect('http://localhost', { port: 8001 });
socket.on('connect', function() {
alert('connect');
});
socket.on('error', function (data) {
console.log(data || 'error');
});
socket.on('connect_failed', function (data) {
console.log(data || 'connect_failed');
});
</script>
</head>
<body>
</body>
</html>
Dopo l'avvio del server utilizzando node server.js
l'output standard (previsto) è wr Itten alla console del server:
info: socket.io started
Quando apro index.html
nel browser (Chrome nel mio caso - non prova su altri browser) il seguente registro viene scritto nella console del server:
info: socket.io started
debug: served static content /socket.io.js
debug: client authorized
info: handshake authorized 9952353481638352052
debug: setting request GET /socket.io/1/websocket/9952353481638352052
debug: set heartbeat interval for client 9952353481638352052
debug: client authorized for
got a new connection from: 9952353481638352052
debug: setting request GET /socket.io/1/xhr-polling/9952353481638352052?t=1333635235315
debug: setting poll timeout
debug: discarding transport
debug: cleared heartbeat interval for client 9952353481638352052
debug: setting request GET /socket.io/1/jsonp-polling/9952353481638352052?t=1333635238316&i=0
debug: setting poll timeout
debug: discarding transport
debug: clearing poll timeout
debug: clearing poll timeout
debug: jsonppolling writing io.j[0]("8::");
debug: set close timeout for client 9952353481638352052
debug: jsonppolling closed due to exceeded duration
debug: setting request GET /socket.io/1/jsonp-polling/9952353481638352052?t=1333635258339&i=0
...
...
...
Nella console browser ottengo:
connect_failed
Così sembra che il cliente sta raggiungendo il server e il tentativo di connessione, e il server è che autorizza la stretta di mano, ma il 0.123.294 L'eventonon viene mai attivato nel client, invece il metodo di connessione raggiunge il numero connect timeout
e max reconnection attempts
e restituisce connect_failed
.
Qualsiasi aiuto \ intuizione su questo sarebbe utile.
Grazie
provare solo utilizzando io.connect() si può dedurre la URL e porta dall'URL in cui ti trovi. Ho avuto problemi in passato con cose in io.connect che non funzionano come mi aspetterei che succedano. –
@kfiroo hai trovato qualche soluzione per questo? – Hackableweb
@TimothyStrimple Grazie Tim! ** Lavorando di nuovo su heroku (Cedar) e localhost **! – AmpT