he instalado en Rackspace con Ubuntu Node.js con Socket.IONodeJS - Configuración: Socket.IO sirvieron contenido estático sin apretón de manos (Ubuntu en Rackspace Cloud Server)
Cuando probé una aplicación de servidor simple y tratar de use la solicitud del cliente Obtuve 'contenido estático servido' solo en lugar de agitar las manos. En el navegador de depuración puedo ver "Hola S ..." y en el lado del servidor:
# node socket-server.js
info - socket.io started
debug - served static content /socket.io.js
debug - served static content /socket.io.js
No estoy seguro de por dónde empezar mirada de un problema (la misma secuencia de comandos funciona en el desarrollo local)
¿Por qué node.js solo publica contenido estático y no usa handshake?
Iptables permiten puerto 8866: # iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:8866
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:8866
Aquí es una sencilla aplicación de servidor socket-server.js ':
// Require HTTP module (to start server) and Socket.IO
var http = require('http'), io = require('socket.io');
// Start the server at port 8866
var server = http.createServer(function(req, res){
// Send HTML headers and message
res.writeHead(200,{ 'Content-Type': 'text/html' });
res.end('<h1>Hello Socket Lover!</h1>');
});
server.listen(8866);
// Create a Socket.IO instance, passing it our server
var socket = io.listen(server);
// Add a connect listener
socket.on('connection', function(client){
// Create periodical which ends a message to the client every 5 seconds
var interval = setInterval(function() {
client.send('This is a message from the server! ' + new Date().getTime());
},5000);
// Success! Now listen to messages to be received
client.on('message',function(event){
console.log('Received message from client!',event);
});
client.on('disconnect',function(){
clearInterval(interval);
console.log('Server has disconnected');
});
});
Aquí es un simple cliente (SERVERDOMAIN se sustituye con el dominio real):
<!DOCTYPE html>
<html>
<head>
<script src="http://SERVERDOMAIN:8866/socket.io/socket.io.js"></script>
<script>
// Create SocketIO instance
var socket = io.connect('SERVERDOMAIN:8866');
// Add a connect listener
socket.on('connect',function() {
log('<span style="color:green;">Client has connected to the server!</span>');
});
// Add a connect listener
socket.on('message',function(data) {
log('Received a message from the server: ' + data);
});
// Add a disconnect listener
socket.on('disconnect',function() {
log('<span style="color:red;">The client has disconnected!</span>');
});
// Sends a message to the server via sockets
function sendMessageToServer(message) {
socket.send(message);
log('<span style="color:#888">Sending "' + message + '" to the server!</span>');
}
// Outputs to console and list
function log(message) {
var li = document.createElement('li');
li.innerHTML = message;
document.getElementById('message-list').appendChild(li);
}
</script>
</head>
<body>
<p>Messages will appear below (and in the console).</p><br />
<ul id="message-list"></ul>
<ul style="margin:20px 0 0 20px;">
<li>Type <code>socket.disconnect()</code> to disconnect</li>
<li>Type <code>socket.connect()</code> to reconnect</li>
<li>Type <code>sendMessageToServer('Your Message')</code> to send a message to the server</li>
</ul>
</body>
</html>
si hay un error en su página, la salida se detiene después de "depuración - contenido estático servido /socket.io.js" - ¿está seguro de que su código de cliente está funcionando? – supernova