2011-12-23 1 views
4

here 예를 따라 문제가 발생했습니다.Node.js w/socket.io : TypeError : 새 관리자에서 Obj에 'on'메서드가 없습니다

node.js:134 
     throw e; // process.nextTick error, or 'error' event on first tick 
     ^
TypeError: Object #<Object> has no method 'on' 
    at new Manager (/Users/x/nodeprojects/cloudnode/node_modules/socket.io/lib/manager.js:97:10) 
    at Object.listen (/Users/x/nodeprojects/cloudnode/node_modules/socket.io/lib/socket.io.js:71:10) 
    at Object.<anonymous> (/Users/x/nodeprojects/cloudnode/sky/server.js:12:26) 
    at Module._compile (module.js:402:26) 
    at Object..js (module.js:408:10) 
    at Module.load (module.js:334:31) 
    at Function._load (module.js:293:12) 
    at Array.<anonymous> (module.js:421:10) 
    at EventEmitter._tickCallback (node.js:126:26) 

server.js : 나는 실행 해요

var static = require('./plugins/node-static'); 
var socketIO = require('socket.io'); 
var clientFiles = new static.Server('./client'); 

var httpServer = require('http'); 
httpServer.createServer(function (request, response) { 
    request.addListener('end', function() { 
      clientFiles.serve(request, response); 
     }); 
}).listen(8253); 

var webSocket = socketIO.listen(httpServer); 
webSocket.on('connection', function(client) { 
    client.send('Please enter a user name ...'); 

    var userName; 
    client.on('message', function(message) { 
     if(!userName) { 
      userName = message; 
      webSocket.broadcast(message + ' has entered the zone.'); 
      return; 
     } 

     var broadcastMessage = userName + ': ' + message; 
     webSocket.broadcast(broadcastMessage); 
    }); 

    client.on('disconnect', function() { 
     var broadcastMessage = userName + ' has left the zone.'; 
     webSocket.broadcast(broadcastMessage); 
    }); 
}); 

노드 V 0.4.10 사람이이 나는 node server.js을 실행하면

나는 다음과 같은 예외가 발생 npm install socket.io 와 socketIO 설치 솔루션 아이디어?

답변

9

http 모듈 대신 http 모듈을 socket.io에 전달하고 있습니다.

var http = require('http'); 
var httpServer = http.createServer(function (request, response) { 
    request.addListener('end', function() { 
      clientFiles.serve(request, response); 
     }); 
}).listen(8253); 

var webSocket = socketIO.listen(httpServer); 
webSocket.on('connection', function(client) { 
+0

사실입니다. 하지만 그 점을 바꿨고 오류는 동일하게 유지되고 Manager 객체에 불평합니다! –

+0

오, 알았어요. 내 대답을 바로 잡았어. – fent