关于 “有道云笔记”,多个页面同时登录的问题

1.    http://www.th7.cn/Program/java/201406/217785.shtml


java socket.io结合node.js

用java开发的socket.io,用户node.js作为服务器端,作用就是同步同步,比如开发网站的时候,当用户登录之后,可以实现当前浏览器多个窗口的页面都是登录后的效果


 首先需要安装socket.io,以及所需要的模块, 在项目里引用socket.io的js包, java代码构建socket.io的类,这个类主要参考https://github.com/Gottox/socket.io-java-client。

      还需要安装node.js, 在项目文件的位置新建socketserver.js 用node.js运行  具体怎么实现  需要去学习怎么安装以及运行node.js。

socketserver.js里的内容根据自己的业务需要而定,但需要指出的是每个页面的请求都是唯一的,即使是同一个key去记录socket,那么也需要一个数组去记录,否则只能处理一个页面的请求,

比如var users = {};//存放用户数组 登录之后的函数

socket.on('initUser', function(key){
var sockets = users[key];
if (sockets){
sockets.push(socket);
}else{
sockets = [socket];
}
users[key] = sockets;//多个页面记录同意用户的不同页面的client
});

然后登录成功之后通知页面已经登录了

//当用户登录成功之后 推送给客户端提示登录成功
socket.on('do_login', function (jsonData) {//捕获客户端发送名为'do_login'的数据 如果业务需要 可以扩展一个callback的参数
var jsSockets = users[jsonData.userKey];
if (jsSockets){
console.log('jsSockets的个数:' + jsSockets.length);
for(var i =0; i<jsSockets.length; i++){
jsSockets[i].emit('login_success', jsonData.loginResult);//告诉客户端连接本次请求登录信息成功 broadcast属性面向多个connection都可以的
}
}
});

ok,这样就实现了socket.io与node.js一起同步通知的功能


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值