Frage

Ich habe den ganzen Tag zu kämpfen versucht, dieses einfache Beispiel mit Socket.io zum Laufen zu bringen. Ich habe zunächst unter Windows 7 mit Cygwin ausprobiert. Habe seitdem auch auf OS X ausprobiert, mit dem gleichen Ergebnis.

Beim Ausführen des Skripts wird dies angezeigt ...

2 May 20:57:47 - socket.io ready - accepting connections

Der Besuch der Seite index.html zeigt jedoch nicht, dass ein Client überhaupt verbunden ist.

index.html

<html>
<head>
<script type="text/javascript" src="socket.io.js"></script> 
<script type="text/javascript"> 
    var socket = new io.Socket('localhost',{'port':8090});

    socket.connect();

    socket.on('connect', function(){
        console.log('connected');
        socket.send('hi!'); 
    });

    socket.on('message', function(data){ 
        console.log('message recived: ' + data);
    });

    socket.on('disconnect', function(){
        console.log('disconected');
    });
</script> 
</head>
<body></body>
</html>

server.js

var http = require('http'), io = require('socket.io'),

server = http.createServer(function(req, res){ 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('<h1>Hello world</h1>'); 
});
server.listen(8090);

var socket = io.listen(server); 
socket.on('connection', function(client){ 
    console.log('client connected');

    client.on('message', function(){ 
        console.log('message arrive');
        client.send('some message');
    });

    client.on('disconnect', function(){
        console.log('connection closed');
    });
});

Irgendwelche Ideen darüber, was ich falsch machen könnte? Es werden überhaupt keine Konsolennachrichten angezeigt. Bemerkenswerterweise, wenn ich Firebug verwende, um die Index.html -Seite zu betrachten, werden keine Skripte eingebettet, was seltsam ist. Nicht sicher, was das verursachen könnte.

War es hilfreich?

Lösung

Sie servieren socket.io.js (oder die Flash -Datei) nicht.

Ich würde mit dem CDN empfehlen:

<script src="http://cdn.socket.io/stable/socket.io.js"></script>

oder alternativ verwenden ausdrücken So servieren Sie die Datei socket.io.js.

bearbeiten:

ERR, der tatsächlich näher schaut, dienen Sie auch nicht in INDEX.html. Express könnte funktionieren, sondern für das einfache Beispiel:

var fs = require('fs');
var index = fs.readFileSync('index.html');
//note the readFileSync is done only in the first tic
.
.
.
res.writeHead(200, {'Content-Type': 'text/html'}); 
res.end(index); 

Andere Tipps

Sie laden die Socket.io -Bibliothek nicht ordnungsgemäß in Ihrer Index.html -Datei. Versuche dies:

<script type="text/javascript" src="http://localhost:8090/socket.io/socket.io.js"></script> 

Verwenden Sie dies auf der Client -Seite als Pfad!

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 

Ja, und kommentieren Sie die folgende Zeile:

// server.listen(8090);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top