不知道从socket.io库的第几个版本开始起,在socket端口对象中用于在服务器端保存用户数据的set与get便被抛弃不用了,原来这两个方法的用法是
socket.set(name,data,[callback]
name参数值为一个字符串,用于指定被保存数据的键名
data参数值可以为一个字符串或者对象,用于指定被保存的数据
callback用于指定保存数据结束时调用的回调函数,不使用任何参数
socket.get(name,callback)
name指定需要获取的数据键名
callback获取结束时的回调函数,function(err,data){}
这两个方法保存的数据在用户当前会话期间有效,当页面刷新或者浏览器关闭之后就失效了,但现在这两个方法都不能使用,我们可以采用socket.name的方式替代
var http=require("http");
var express=require("express");
var serveStatic=require('serve-static');
var sio=require("socket.io");
var app=express();
app.set("views","./");
app.set("view engine","pug");
app.use(serveStatic(__dirname));
var server=http.createServer(app);
app.get("/",function(req,res){
res.render("index");
});
server.listen(1337);
var socket=sio.listen(server);
socket.on("connection",function(socket){
socket.emit("news",{hello:"yourName"});
socket.on("other",function(data){
if(data.myName){
console.log("服务器收到消息:"+data.myName);
socket.name=data.myName;
}else{
console.log("服务器收到消息:"+data.data);
}
});
socket.on("othera",function(data){
console.log("收到新消息:"+data.data);
});
socket.on("otherb",function(data){
console.log("收到新消息:"+data.data);
});
setTimeout(function(){
socket.emit("news",{hello:socket.name});
},3000);
});