socket.io配置

时间:2011-10-10 08:07:42

标签: node.js socket.io

我正在尝试按照https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IO

设置socket.io的配置
io.set('log level', 1);

但是我得到了TypeError:对象#没有方法'设置'......出了什么问题?我有io = require(“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 = require(“socket.io”) .listen(8080)它会给我错误,找不到listen方法。

3 个答案:

答案 0 :(得分:8)

require('socket.io')返回一个Socket对象。 set属性在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

答案 1 :(得分:2)

您需要var io = require('socket.io').listen(80);而非仅需要。

答案 2 :(得分:1)

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

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

});

这里有一件重要的事情需要注意。如果你得到错误* process.nextTick错误,或者第一次打勾时发生'错误'事件...... *这意味着你有另一个网络服务器,比如Apache,正在收听80端口。

因此,如果您将端口设置为,例如8080,它应该可以工作:

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

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

});

希望这有帮助。