2013-06-07 17 views
25

Ich versuche Daten in den Browser zu streamen. Ich habe jedoch Schwierigkeiten, es mit dem Browser zu verbinden. Hier ist mein html:GET http: // localhost: 3000/socket.io/socket.io.js 404 (nicht gefunden)

<ul class="tweets"></ul> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect(); 
    jQuery(function ($) { 
     var tweetList = $('ul.tweets'); 
     socket.on('tweet', function (data) { 
      tweetList .prepend('<li>' + data.user + ': ' + data.text + '</li>'); 
     }); 
    }); 
</script> 

Und hier ist die relevanten Teile meines app.js:

var express = require('express') 
    , twitter = require('ntwitter') 
    , http = require('http') 
    , path = require('path'); 

var app = express(); 

var io = require('socket.io').listen(app); 

app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); 

app.listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

io.sockets.volatile.emit('tweets', { 
      user: data.user.screen_name, 
      text: data.text, 
      geo : geo, 
      latitude: latitude, 
      longitude: longitude 
       }); 

I socket.io 0.9.16 über meine packages.json Datei installiert:

"dependencies": { 
    "express": "3.2.6", 
    "jade": "*", 
    "ntwitter":"0.2.10", 
    "socket.io":"0.9.x" 
    } 

Kann mir hier jemand helfen? Warum kann es die Datei nicht finden?

Ein bisschen tiefer graben. Um die Steckdose zu testen, habe ich dies in den app.js:

var socket = io.listen(app); 

Und ich bekomme die Fehlermeldung:

TypeError: Object #<Manager> has no method 'listen' 
    at Object.<anonymous> (/home/andy/dev/node/mytwittermap/app.js:49:17) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:901:3 

Antwort

17

Können Sie dies versuchen

http = require('http'); 
var app = express(); 
var server = http.createServer(app); 

var io = require('socket.io').listen(server); 

Ich denke, Sie werden muss den socketio-Server instanziieren.

+0

Großen - das jetzt zu arbeiten (viele gute Debug-Informationen in der Konsole) scheint. Jetzt auf warum es nicht im Browser angezeigt wird. Vielen Dank für Ihre Hilfe. – babbaggeii

+0

ich liebe dich ..... –

67

Ihre Einrichtung muss so etwas wie folgt aussehen:

var app  = express(); 
var server = require('http').createServer(app); 
var io  = require('socket.io').listen(server); 
... 
server.listen(app.get('port')); // not 'app.listen'! 
+27

Danke, deine Zeile: "// nicht 'app.listen'!" Hat mir sehr geholfen !! – JonaPkr

+3

Danke für die "nicht app.listen" – Eric

+3

2016 hier. Ich hatte den gleichen Fehler. Details haben sich geändert, aber der Teil, den wir tun müssen, um server.listen (nicht in der App) zu verwenden, ist immer noch gültig. Vielen Dank! – sra

Verwandte Themen