nodejs聊天室例子代码,运行出错,TypeError: Object #<Socket> has no method 'set'
发布于 10 年前 作者 Mecil9 6935 次浏览 最后一次编辑是 8 年前

var httpd = require(‘http’).createServer(handler); var io = require(‘socket.io’).listen(httpd); var fs = require(‘fs’);

httpd.listen(4000);

function handler(req,res){ fs.readFile(__dirname + ‘/index.html’, function(err,data){ if(err){ res.writeHead(500); return res.end(‘错误读取index.html文件’); } res.writeHead(200); res.end(data); }); }

io.sockets.on(‘connection’,function(socket){ socket.on(‘clientMessage’,function(content){ socket.emit(‘serverMessage’,'You said: ’ + content); socket.get(‘username’,function(err,username){ if(! username){ username = socket.id; } socket.broadcast.emit(‘serverMessage’,username + ’ said: ’ + content); }); });

socket.on('login',function(username){
    socket.set('username',username,function(err){
        if(err) { throw err;}
        socket.emit('serverMessage','Currently logged in as ' + username);
        socket.broadcast.emit('serverMessage','User ' +  username + 'logged in');
    });
});

socket.emit('login');

});

以上代码可运行,一旦输入用户名提示TypeError: Object #<Socket> has no method 'set’报错退出,请问是神马原因?

2 回复

socket.io中的get / set方法在新版本中已经被抛弃了,官方文档中有说的 http://socket.io/docs/migrating-from-0-9/

那用什么方法代替了呢?

回到顶部