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

  • 相关阅读:
    二叉树计算叶子节点的计算问题
    操作系统中有关读者写者问题
    Java中关于CountDownLatch的使用
    Java中关于CyclicBarrier的使用
    将毫秒 换算成(天 时 分 秒 毫秒)
    数据库訪问技术之JDBC
    窥探开发人员与用户
    Cocos2d-x游戏开发之lua编辑器 Sublime 搭建,集成cocos2dLuaApi和自有类
    高速排序,归并排序,堆排序python实现
    svn 批量加入没有加入版本号控制的文件命令
  • 原文地址:https://www.cnblogs.com/xiaofeilee/p/3785235.html
Copyright © 2020-2023  润新知