2013-10-11 5 views
2

EDIT 1:socket.io ne peut pas faire fonctionner

Ok, problème avec le serveur résolu. C'est le code serveur complet intégré dans mon projet.

var http =    require('http'); 
var express =   require('express'); 
var requestHandler = require(__dirname + '/app_modules/request-handler.js'); 
var app =    express(); 

app.configure(function(){ 
    app.use(express.static(__dirname + '/html')); 
    app.use(express.bodyParser()); 
}); 

var httpServer = http.createServer(app); 
httpServer.listen(80); 

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

io.on('connection', function(socket){ 
    socket.on('event', function(data){ 

    }); 
    socket.on('disconnect', function(){ 

    }); 
}); 

Le prochain numéro comprend le fichier source .js dans ma page html statique. Cela jette une erreur:

<script src="/socket.io/socket.io"></script> 

Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost/socket.io/socket.io". localhost/:206 
Uncaught SyntaxError: Unexpected identifier socket.io:1 
Uncaught ReferenceError: io is not defined 

PROBLÈME ORIGINAL:

J'essaie d'obtenir ce suceur de travail sur un serveur de test. Ceci est 1: 1, directement à partir des documents socket.io sur github.

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

io.on('connection', function(socket){ 
    socket.on('event', function(data){ 

    }); 
    socket.on('disconnect', function(){ 

    }); 
}); 

server.listen(3000); 

Voici ce que je reçois:

[INFO] 19:37:40 Restarting 
[ERROR] 19:37:40 TypeError 
TypeError: object is not a function 
    at Object.<anonymous> (/Users/me/work/github/node-forever-gui/server/socket_test.js:3:30) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Object..js (/usr/local/lib/node_modules/node-dev/lib/hook.js:52:17) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (/usr/local/lib/node_modules/node-dev/lib/wrap.js:47:1) 
    at Module._compile (module.js:456:26) 

Tous les modules sont installés par NPM. S'il vous plaît, aidez-moi à comprendre cela!

+0

Qu'est-ce que la colonne 3 de la ligne 3? Est-ce votre fichier 'full socket_test.js' (bloc de code supérieur) –

+0

socket_test.js est le premier code que j'ai posté. –

+0

http://socket.io/ Dans leur exemple, ils montrent 'require ('socket.io'). Listen (80)' idk si vous pouvez combiner le noeud 'http server' avec le socket io. Essayez 80 d'abord. –

Répondre

9

C'est exactement ce qui est indiqué, io n'est pas une fonction et vous ne pouvez pas lui passer un objet HTTP. Utilisez plutôt la méthode listen pour attacher Socket.IO à une instance HTTP.

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

Pour votre deuxième erreur, le fichier est un script et possède une extension. Ajouter le .js à la référence.

<script src="/socket.io/socket.io.js"></script> 
+0

Cela semble fonctionner, s'il vous plaît voir ma question éditée. –

+0

Réponse éditée - vous n'incluez pas le script correctement. – hexacyanide

+0

Oui, c'était le problème. Erreur stupide, merci :) –

Questions connexes