NodeJS + Socket.IO 最终版
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了NodeJS + Socket.IO 最终版,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2880字,纯文字阅读大概需要5分钟。
内容图文
服务器端
//socket.io var app = require("express")(); var http = require("http").Server(app); var io = require("socket.io")(http); //couchbase var couchbase = require("couchbase"); var cluster = new couchbase.Cluster("couchbase://ip"); var bucket = cluster.openBucket("name","pass"); var onlineUsers = {}; var onlineCount = 0; io.on("connection" , function(socket){ socket.on("login" , function(obj){ socket.name = obj.userid; console.log(new Date() + " : 编号" + obj.userid + "员工已登录!"); if(onlineUsers.hasOwnProperty(obj.userid)){ delete onlineUsers[obj.userid]; onlineCount --; } onlineUsers[obj.userid] = {‘userid‘:obj.userid,‘socket‘:socket}; onlineCount ++; }); socket.on("disconnect" , function(){ if(onlineUsers.hasOwnProperty(socket.name)){ var obj = {userid:socket.name}; delete onlineUsers[socket.name]; onlineCount --; console.log(new Date() + " : 编号" + obj.userid+‘已登出!‘); } }); }); setInterval(function(){ bucket.getMulti([ "Document1" , "Document2" ], function(err, result) { if(err){ console.log(new Date() + " : ERROR : " + err); } else { NodeEmit(result); } }); } , 10 * 1000); function NodeEmit(result){ for(var user in onlineUsers){ // Document1 _Str_cmd1 = result["Document1"].value["content"][user]; onlineUsers[user].socket.emit("cmd1" , _Str_cmd1); // Document2 if(typeof(result["Document2"].value["content"][user]) != "undefined"){ _Str_cmd2 = JSON.stringify(result["Document2"].value["content"][user]); onlineUsers[user].socket.emit("cmd2" , _Str_cmd2); } } } http.listen(8066 , function(){ console.log("listening on *:8066"); });
客户端 JS
function GetNoticeTipCount() { if ($("#hfAdminID").val() != "") { var adminid = $("#hfAdminID").val(); //连接 var socket = io.connect("ws://ip:8066/", { ‘forceNew‘: true, ‘reconnect‘: true }); socket.emit("login", { userid: adminid }); InitNotice(socket); /*********************************/ // 自动重连,记录状态 socket.on(‘connect‘, function(data) { console.log(moment().format(‘HH:mm:ss‘) + " 已连接服务器"); //重连成功后重新提交登录请求 socket.emit("login", { userid: adminid }); }); socket.on(‘connect_failed‘, function(data) { console.log(moment().format(‘HH:mm:ss‘) + " 连接失败"); }); socket.on(‘error‘, function(data) { console.log(moment().format(‘HH:mm:ss‘) + " ERROR"); }); socket.on(‘reconnecting‘, function (data) { console.log(moment().format(‘HH:mm:ss‘) + " 重连服务器中"); }); socket.on(‘reconnect‘, function (data) { console.log(moment().format(‘HH:mm:ss‘) + " 重连服务器成功"); }); socket.on(‘disconnect‘, function (data) { console.log(moment().format(‘HH:mm:ss‘) + " 连接断开"); }); /***********************************/ } } //初始化提醒 function InitNotice(socket) { socket.on("cmd1", function (_notices) { console.log(moment().format(‘HH:mm:ss‘) + " " + _notices); //其他操作 }); socket.on("cmd2", function (_cnc) { console.log(moment().format(‘HH:mm:ss‘) + " " + _cnc); //其他操作 }); }
原文:http://www.cnblogs.com/chenliang-zibo/p/5400396.html
内容总结
以上是互联网集市为您收集整理的NodeJS + Socket.IO 最终版全部内容,希望文章能够帮你解决NodeJS + Socket.IO 最终版所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。