//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://192.168.1.1"); 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)){ //onlineUsers[obj.userid] = obj.userid; onlineUsers[obj.userid] = {'c_id':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([ "Name1" , "Name2" ], function(err, result) { if(err){ console.log(new Date() + " : ERROR : " + err); } else { NodeEmit(result); } }); } , 10 * 1000); function NodeEmit(result){ for(var user in onlineUsers){ _Str_Name1 = result["Name1"].value["content"][user]; //io.emit("cmd" + user.toString() , _Str); onlineUsers[user].socket.emit("cmd" + user.toString() ,_Str_Name1); // if(typeof(result["Name2"].value["content"][user]) != "undefined"){ _Str_Name2 = JSON.stringify(result["Name2"].value["content"][user]); //io.emit("cmd2" + user.toString() , _Str_Name2); onlineUsers[user].socket.emit("cmd2" + user.toString() , Str_Name2); } } } http.listen(8066 , function(){ console.log("listening on *:8066"); });
一、一次從Couchbase 獲取多個 documentjavascript
bucket.getMulti([ "Name1" , "Name2" ], function(err, result) { if(err){ } else{ } });
使用java
result["Name1"]
二、解決CPU 佔用 100%的問題。express
原來是用IO對象直接 emitapp
var io = require(「socket.io」)(http);socket
io.emit(「cmd」+userid , _Str);ui
如今把每一個鏈接的socket保存下來socket.io
onlineUsers[obj.userid] = {‘c_id’:obj.userid,‘socket’:socket};對象
推送時blog
onlineUsers[userid].socket.emit(「cmd」 +user id, _Str);ip