node socket.io setget方法

xiaoxiao2021-02-28  112

不知道从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); });
转载请注明原文地址: https://www.6miu.com/read-94766.html

最新回复(0)