2011-10-10 57 views
5

我試圖設置socket.io配置按https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IOsocket.io配置

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

但我發現了類型錯誤:對象#已沒有方法「設置」 ......有什麼不對?我有IO =要求( 「socket.io」)

也試過,

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

,但沒有運氣。怎麼了 ?

編輯:

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

這工作得很好。但是,如果我將它更改爲IO =要求( 「socket.io」)。聽(8080)它給了我的錯誤,聽法未找到。

回答

2

你想要var io = require('socket.io').listen(80);而不是僅僅需要。

+0

我的應用程序完美的作品不聽(80)...想添加這個配置,以減少日誌級別。當添加listen(80)時,這也會失敗,出現錯誤,node.js:134 throw e;在第一跳// process.nextTick錯誤,或「錯誤」事件 ^ 類型錯誤:對象#有沒有方法「聽」 – user644745

+0

那是因爲事情是在80端口 – Kato

+0

運行@Jason_King你聽HTTP進程,而不是港口,我相信 – Kato

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

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

}); 

這裏需要注意一點。如果在第一次打勾時得到錯誤* process.nextTick錯誤或'錯誤'事件... *表示您有另一臺網絡服務器,如Apache,正在監聽端口80.

因此,如果您chnage端口,例如8080,它應該工作:

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

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

}); 

希望這會有所幫助。

+0

感謝您的解釋。我聽到「聽」的錯誤,因爲「TypeError:Object# has no method'listen'」....我正在使用express和端口9999進行偵聽......如果我使用require( 'socket.io')。聽(9999)或聽(8080)?如果我不使用listen('socket.io')。listen(9999),我的應用程序工作得很好..但我需要添加「io.set('log level',3);」,但我不能像它說的「沒有方法」設置「」 – user644745

+0

顯示我的代碼,我會看看。 – oscarm

+0

作爲編輯在原始問題中添加的部分代碼。 – user644745

8

require('socket.io')返回一個Socket對象。設置的屬性在socket.io-manager上。經理通過require('socket.io').listen(server)致電回覆。

請注意,您應該通過一個Web服務器socket.io,不只是一個端口:

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