2011-10-10 30 views
5

tôi đang cố gắng để thiết lập cấu hình cho socket.io theo https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IOcấu hình socket.io

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

Nhưng tôi nhận được Lỗi Loại: Object # đã không có phương pháp 'đặt' ... chuyện gì vậy? Tôi có io = require ("socket.io")

Cũng cố gắng,

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

nhưng không có may mắn. chuyện gì vậy ?

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

này hoạt động tốt .. Nhưng nếu tôi thay đổi nó để io = require ("socket.io") .listen (8080) nó mang lại cho tôi lỗi, nghe phương pháp không tìm thấy.

Trả lời

2

Bạn muốn var io = require('socket.io').listen(80); thay vì chỉ yêu cầu.

+0

Ứng dụng của tôi hoạt động hoàn hảo mà không cần lắng nghe (80) ... muốn thêm cấu hình này để giảm mức độ đăng nhập . Khi thêm nghe (80) điều này cũng không thành công với lỗi, node.js: 134 ném e; // process.nextTick lỗi hoặc sự kiện 'lỗi' trên đánh dấu đầu tiên ^ Loại lỗi: Đối tượng # không có phương pháp 'nghe' – user644745

+0

Đó là vì một thứ đang chạy trên cổng 80 – Kato

+0

@Jason_King bạn lắng nghe quy trình http, chứ không phải cổng, tôi tin rằng – Kato

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

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

}); 

Có một điều quan trọng cần lưu ý ở đây. Nếu bạn gặp lỗi * lỗi process.nextTick hoặc sự kiện 'lỗi' trên lần đánh dấu đầu tiên ... * có nghĩa là bạn có một máy chủ web khác, như Apache, nghe cổng 80.

Vì vậy, nếu bạn chnage cổng đến, ví dụ 8080, nó phải hoạt động:

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

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

}); 

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn bạn đã giải thích. Tôi nhận được lỗi trên "nghe", như, "TypeError: Object # không có phương pháp 'nghe'" .... Tôi đang sử dụng thể hiện và nghe ở cổng 9999 ... điều này gây ra vấn đề nếu tôi sử dụng yêu cầu ('socket.io') nghe (9999) hoặc nghe (8080) ?? Nếu tôi không sử dụng nghe như trong yêu cầu ('socket.io'). Nghe (9999), ứng dụng của tôi hoạt động hoàn hảo tốt .. Nhưng tôi cần thêm "io.set ('log level', 3);", nhưng tôi không thể như nó nói "không có phương pháp 'thiết lập" " – user644745

+0

chỉ cho tôi mã, tôi sẽ có một cái nhìn. – oscarm

+0

một phần của mã được thêm vào trong câu hỏi gốc là chỉnh sửa. – user644745

8

require('socket.io') trả về đối tượng Socket. Các thuộc tính thiết lập nằm trên socket.io-manager. Người quản lý được trả lại bằng cách gọi số require('socket.io').listen(server).

Lưu ý rằng bạn nên đi qua một máy chủ web để socket.io, không chỉ là một cổng:

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