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一起同步通知的功能