2011-10-10 21 views
5

Estoy tratando de establecer la configuración para socket.io según https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IOconfiguración socket.io

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

Pero estoy TypeError: Objeto # ha 'set' hay un método ... ¿qué pasa? Tengo = io requieren ("socket.io")

También probamos,

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

pero no hubo suerte. ¿Qué pasa?

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

Esto funciona bien .. Pero si lo cambio a Io = requieren ("socket.io") .listen (8080) me da error, escucha método extraviado.

Respuesta

2

Desea que var io = require('socket.io').listen(80); en lugar de solo requiera.

+0

Mi aplicación funciona perfectamente sin escuchar (80) ... quería añadir esta configuración para reducir el nivel de registro . Cuando se agrega listen (80), esto también falla con error, node.js: 134 throw e; // error process.nextTick, o evento 'error' en la primera marca ^ TypeError: Objeto # no tiene un método 'escuchar' – user644745

+0

Eso es porque algo se está ejecutando en el puerto 80 – Kato

+0

@Jason_King escuchas el proceso de http, no el puerto, creo – Kato

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

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

}); 

Hay una cosa importante a tener en cuenta aquí. Si se obtiene el error * error process.nextTick, o evento 'error' en la primera marca ... * que significa que tiene otro servidor web, como Apache, escuchando el puerto 80.

lo tanto, si chnage el puerto para, por ejemplo 8080, debería funcionar:

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

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

}); 

Espero que esto ayude.

+0

Gracias por la explicación. Aparece el error en "escuchar", ya que, "TypeError: Object # no tiene el método 'listen'" .... Estoy usando express y escuchando en el puerto 9999 ... esto está causando el problema si uso require ('socket.io'). listen (9999) o listen (8080) ?? Si no uso listen como en require ('socket.io'). Listen (9999), mi aplicación funciona perfectamente bien ... Pero necesitaba agregar "io.set ('log level', 3);", pero No puedo, ya que dice "no tiene ningún método 'establecido'" – user644745

+0

muéstrame el código, voy a echar un vistazo. – oscarm

+0

parte del código agregado en la pregunta original como editar. – user644745

8

require('socket.io') devuelve un objeto Socket. Las propiedades establecidas están en socket.io-manager. El administrador es devuelto por require('socket.io').listen(server) llamada.

en cuenta que debe estar pasando un servidor web para Socket.IO, no sólo un puerto:

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