我正在制作一个简单的node.js应用程序并打算使用socket.io但到目前为止我无法启动服务器.
这是我的代码:
var http = require('http'),io = require('socket.io'),fs = require('fs'); http.createServer(function(request,response){ fs.readFile(__dirname + '/index.html',function(err,data){ if(err){ response.writeHead(500,{'Content-Type': 'text/plain'}); return response.end('Error'); } response.writeHead(200,{'Content-Type': 'text/html'}); response.end(data); }); }).listen(1337); io.sockets.on('connection',function(socket){ socket.emit('pic',{ addr: '/pic.jpg' }); socket.on('status',function(data){ console.log(data); }) })
这是我收到的输出:
[root@ip-10-224-55-226 node]# node server.js /srv/node/server.js:16 io.sockets.on('connection',function(socket){ ^ TypeError: Cannot call method 'on' of undefined at Object.<anonymous> (/srv/node/server.js:16:12) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9) [root@ip-10-224-55-226 node]#
Socket.IO由NPM安装,似乎位于/root/node_modules/socket.io中
因此,我已将该目录的sym-link(ln -s)发送到我的服务器根目录所在的/ srv / node.
解决方法
io只是一个图书馆.您想要侦听连接到一个特定实例:
var http = require('http'),fs = require('fs'); var serv = http.createServer(function(request,{'Content-Type': 'text/html'}); response.end(data); }); }); serv.listen(1337); // Bind socket.io to server var serv_io = io.listen(serv); serv_io.sockets.on('connection',function(data){ console.log(data); }) });