NodeJS - Socket.IO Setup: static content did not support handshake (Ubuntu on Rackspace Cloud Server)

I installed on Rackspace with Ubuntu node.js with Socket.IO

When I tried a simple server application and tried to use a client request, I got "only static content" instead of manual jitter. In the browser in debugging, I see "Hello S ..." and on the server side:

# node socket-server.js 
   info  - socket.io started
   debug - served static content /socket.io.js
   debug - served static content /socket.io.js

I'm not sure where to start looking for the problem (the same script works in local development)

Why does node.js only serve static content and does not support handshaking?

Iptables allow port 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 

Here is a simple socket-server.js server application:

// 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');
        });

});

Here is a simple client (SERVERDOMAIN replaced by a real domain):

<!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>
+5
source share
3

var socket = io.connect('http://SERVERDOMAIN:8866');

URL.

+3

socket.io Android ( ) Wi-Fi-. beNerd ,

io.connect('http://localhost:3000');

io.connect('http://192.168.5.3:3000'); // ip address of machine where the node.js app is running.

.

, , NodeJS Socket.IO Wi-Fi-.

+1

, .

Ubuntu 12.04 LTS (Precise Pangolin) node.js socket.io

For the client, I use a local copy of the socket.io.js file with the Flash file.

; -)

0
source

All Articles