2013-06-07 16 views
25

Próbuję przesyłać strumieniowo dane do przeglądarki. Staram się jednak połączyć go z przeglądarką. Tu jest mój HTML:GET http: // localhost: 3000/socket.io/socket.io.js 404 (Nie znaleziono)

<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> 

A tu odpowiednie części moich 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 
       }); 

zainstalowałem socket.io 0.9.16 poprzez mojego pliku packages.json:

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

Czy ktoś może mi pomóc? Dlaczego nie może znaleźć pliku?

Kopanie nieco głębiej. Aby przetestować gniazdo, kładę to w app.js:

var socket = io.listen(app); 

I pojawia się błąd:

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 

Odpowiedz

17

można spróbować to

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

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

Chyba, pokochasz muszą utworzyć instancję serwera socketio.

+0

Wielkiego - który teraz wydaje się działać (wiele dobrych informacji debugowania w konsoli). Teraz na dlaczego nie wyświetla się w przeglądarce. Bardzo dziękuję za pomoc. – babbaggeii

+0

Kocham cię ..... –

67

Twoja konfiguracja powinna wyglądać następująco:

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

Dzięki, twoja linia: "// nie 'app.listen'!" Pomógł dużo !! – JonaPkr

+3

Dzięki za "nie app.listen" tutaj – Eric

+3

2016 tutaj. Miałem ten sam błąd. Szczegóły uległy zmianie, ale część, którą musimy zrobić "server.listen" (nie w aplikacji) jest nadal aktualna. Dzięki! – sra

Powiązane problemy