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