2011-10-10 15 views
5

Sto cercando di impostare la configurazione per socket.io secondo https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IOconfigurazione socket.io

io.set('log level', 1); 

Ma sto TypeError: Object # è alcun metodo 'set' ... che cosa c'è che non va? Ho = IO richiedono ("socket.io")

provato Inoltre,

io.configure('production', function(){ 
    io.set('log level', 1); 
}); 

ma senza fortuna. Cosa c'è che non va ?

EDIT:

require.paths.push('/cygdrive/c/Personal/software/nodejs/NODE/node_modules'); 
var express = require("express"), 
    fs = require("fs"), 
    form = require('connect-form'), 
    app = express.createServer(
     form({ keepExtensions: true }) 
    ), 
    sys = require("sys"), 
    RentModel = require("./rent_schema"), 
    UserModel = require("./track_schema"), 
    io = require("socket.io"), 
    fb = require('facebook-js'), 
    Twitter = require('./Twitter_Analysis'), 
    Foursquare = require('./Foursquare_Analysis'), 
    YQL = require("yql"), 
    settings = require("./settings"); 



socket = io.listen(app); 
::::::::::::::::: 
app.listen(9999); 

Questo funziona bene .. Ma se cambio a IO = richiedono ("socket.io") .listen (8080) mi dà errore, ascoltare metodo non trovato.

risposta

2

Si desidera var io = require('socket.io').listen(80); anziché richiedere.

+0

La mia applicazione funziona perfettamente senza ascoltare (80) ... ha voluto aggiungere questa configurazione per ridurre il livello di log . Quando aggiunto listen (80) anche questo non riesce con errore, node.js: 134 throw e; // process.nextTick error, o evento 'error' al primo tick ^ TypeError: Object # non ha alcun metodo 'listen' – user644745

+0

THAT perché qualcosa è in esecuzione sulla porta 80 – Kato

+0

@Jason_King si ascolta il processo http, non il porto, credo – Kato

1
var io = require('socket.io').listen(80); 

io.configure(function(){ 
    io.set('log level', 3); 

}); 

C'è una cosa importante da notare qui. Se si ottiene l'errore * errore process.nextTick, o l'evento 'errore' al primo tick ... * che significa che hai un altro server web, come Apache, in ascolto sulla porta 80.

Quindi, se si chnage la porta a, per esempio 8080, dovrebbe funzionare:

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

io.configure(function(){ 
    io.set('log level', 3); 

}); 

Spero che questo aiuti.

+0

Grazie per la spiegazione. Ottengo l'errore su "ascolta", come, "TypeError: Object # non ha metodo 'listen'" .... Sto usando express e listening alla porta 9999 ... è questo che causa il problema se uso require ('socket.io'). ascolta (9999) o ascolta (8080) ?? Se non uso ascolto come in require ('socket.io'). Listen (9999), la mia applicazione funziona perfettamente. Ma avevo bisogno di aggiungere "io.set ('log level', 3);", ma non posso, come si dice "non ha alcun metodo" impostato "" – user644745

+0

mostrami il codice, darò un'occhiata. – oscarm

+0

parte del codice aggiunto nella domanda originale come modifica. – user644745

8

require('socket.io') restituisce un oggetto Socket. Le proprietà dell'insieme sono su socket.io-manager. Il gestore viene restituito dalla chiamata require('socket.io').listen(server).

nota che si dovrebbe essere passando un server web per socket.io, non solo un porto:

var app = require('http').createServer(handler), 
    io = require('socket.io').listen(app); 

io.set('log level', 2); 

app.listen(8080); // this is the server, not socket.io