2011-10-10 23 views
5

Próbuję ustawić konfigurację socket.io zgodnie https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IOsocket.io konfiguracja

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

Ale jestem coraz TypeError: Object # jest żadna metoda 'set' ... co się dzieje? Mam IO = require ("socket.io")

próbował Również

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

ale bez powodzenia. Co jest nie tak ?

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

Działa to dobrze .. Ale jeśli zmienię go io = require ("socket.io") .listen (8080) daje mi błąd, słuchać metoda nie znaleziono.

Odpowiedz

2

Potrzebujesz var io = require('socket.io').listen(80); zamiast tylko wymagać.

+0

Moja aplikacja działa doskonale bez słuchać (80) ... chciałem dodać tę konfigurację w celu zmniejszenia poziomu log . Po dodaniu listen (80) to również kończy się niepowodzeniem z błędem, node.js: 134 throw e; // process.nextTick Błąd lub zdarzenie "błąd" przy pierwszym teście ^ TypeError: Obiekt # nie ma metody "nasłuchuj" – user644745

+0

To dlatego, że coś działa na porcie 80 – Kato

+0

@Jason_King słuchasz procesu http, a nie port, wierzę – Kato

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

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

}); 

Należy tu zwrócić uwagę na jedną ważną rzecz. Jeśli pojawia się błąd * błędzie process.nextTick lub „error” zdarzenie na pierwszym kleszcza ... * to znaczy, że masz inny serwer WWW, jak Apache nasłuchuje na porcie 80.

Tak więc, jeśli chnage port do, na przykład 8080, powinien działać:

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

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

}); 

Mam nadzieję, że to pomoże.

+0

Dzięki za wyjaśnienie. Dostaję błąd na "listen", ponieważ "TypeError: Object # nie ma metody" listen "" .... Używam express i nasłuchiwanie na porcie 9999 ... to powoduje problem, jeśli używam require ('socket.io'). listen (9999) lub listen (8080)? Jeśli nie używam nasłuchu jako wymagającego ('socket.io'). Listen (9999), moja aplikacja działa idealnie dobrze. Ale musiałem dodać "io.set ('poziom log', 3);", ale nie mogę, jak to mówi "nie ma metody" zestaw " – user644745

+0

pokaż mi kod, przyjrzę się. – oscarm

+0

część kodu dodana w oryginalnym pytaniu jako edycja. – user644745

8

require('socket.io') zwraca obiekt Socket. Ustawione właściwości są na socket.io-manager. Menedżer jest zwracany przez wywołanie require('socket.io').listen(server).

Uwaga, które powinny być przechodzącą serwera WWW do socket.io, nie tylko port:

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