//下面是一個實例
賽罕網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
/**????
*?socket.io?chat????
*????
*/????
var?web?=?require('QuickWeb');????
//?undefined????
var?_?=?undefined;?????
/**????
*?創(chuàng)建一個房間????
*????
*?@param?{string}?room?房間名稱????
*?@param?{socket.io}?io?socket.io實例????
*/????
var?Room?=?module.exports?=?function?(room,?io)?{????
//?初始化socket.io實例,僅在第一次創(chuàng)建房間時需要設(shè)置io參數(shù)????
if?(typeof?io?!=?'undefined')????
Room.prototype.io?=?io;????
var?io?=?this.io;????
//?房間成員列表????
var?nicknames?=?this.nicknames?=?{};????
var?onlinesum?=?this.onlinesum?=?0;????
//?握手驗證,如果是登錄用戶,則自動獲取其昵稱????
io.set('authorization',?function?(handshakeData,?callback)?{????
//?通過客戶端的cookie字符串來獲取其session數(shù)據(jù)????
var?sessionObject?=?handshakeData.sessionObject?=?web.session.getByCookie(handshakeData.headers.cookie);????
//?如果不是登錄用戶,則自動為其設(shè)置一個昵稱????
var?nickname?=?sessionObject.data.nickname;????
if?(typeof?nickname?!=?'string'?||?nickname?==?'')????
nickname?=?'#'?+?Math.floor(Math.random()?*?1000)?+?''?+?(new?Date().getTime()?%?86400000);????
sessionObject.data.nickname?=?nickname;????
callback(null,?true);????
});????
/**?連接處理?*/????
var?connectionHandle?=?function?(socket)?{????
onlinesum++;????
//?獲取session????
var?session?=?socket.handshake.sessionObject.data;????
var?nickname?=?session.nickname;????
//?保持session,以免session過期????
var?hold_session?=?socket.handshake.sessionObject.hold;????
/**?刷新在線列表?*/????
refresh_online?=?function?()?{????
var?n?=?[];????
for?(var?i?in?nicknames)????
n.push(i);????
socket.broadcast.emit('online?list',?n);????
socket.emit('online?list',?n);????
}????
//?新成員加入時,通知其他成員????
nicknames[nickname]?=?socket;????
refresh_online();????
socket.broadcast.emit('system?message',?nickname?+?'回來了,大家趕緊去噴他~~');????
/**?公共消息?*/????
socket.on('public?message',?function?(msg,?cb)?{????
hold_session();????
var?timestamp?=?new?Date().getTime();????
socket.broadcast.emit('public?message',?nickname,?msg,?timestamp);????
cb();????
});????
/**?私人消息?*/????
socket.on('private?message',?function?(to,?msg,?cb)?{????
hold_session();????
var?timestamp?=?new?Date().getTime();????
var?err?=?'';????
for?(var?i?in?to)?{????
var?target?=?nicknames[to[i]];????
if?(target)?{????
cb();????
target.emit('private?message',?nickname,?msg,?timestamp);????
}????
else?{????
err?+=?'“'?+?to[i]?+?'”不在線\n';????
}????
}????
if?(err?!=?'')????
cb(err);????
});????
/**?斷開來連接?*/????
socket.on('disconnect',?function?()?{????
delete?nicknames[nickname];????
onlinesum--;????
socket.broadcast.emit('system?message',?nickname?+?'悄悄地離開了。。。');????
refresh_online();????
});????
/**?命令?*/????
socket.on('command',?function?(args,?cb)?{????
if?(args.length??1)?{????
cb('無效的命令');????
return;????
}????
switch?(args[0])?{????
/*?查詢或更改昵稱?*/????
case?'nick':????
var?nick?=?args[1];????
if?(typeof?nick?==?'undefined')????
cb(_,?'你的昵稱是:'?+?nickname);????
else????
if?(nick?==?nickname)????
cb('你的昵稱本來就是“'?+?nick?+?'”嘛,不需要改');????
else?if?(nicknameIsUsed(nick))????
cb('昵稱“'?+?nick?+?'”已被占用');????
else?{????
nicknames[nick]?=?nicknames[nickname];????
delete?nicknames[nickname];????
var?oldnick?=?nickname;????
session.nickname?=?nickname?=?nick;????
cb(_,?'昵稱已更改為“'?+?nick?+?'”');????
//?通知其他人????
refresh_online();????
socket.broadcast.emit('system?message',?'“'?+?oldnick?+?'”的昵稱已改為“'?+?nick?+?'”');????
}????
break;????
/*?在線人數(shù)?*/????
case?'online':????
cb(_,?'當前共有'?+?onlinesum?+?'個人在線');????
break;????
/*?幫助?*/????
default:????
cb(_,?strHelp);????
}????
});????
}????
/*?注冊聊天室?*/????
if?(typeof?room?==?'undefined')????
room?=?'';????
io.of('/'?+?room).on('connection',?connectionHandle);????
/**?檢查昵稱是否被占用?*/????
var?nicknameIsUsed?=?function?(nickname)?{????
for?(var?i?in?nicknames)????
if?(i?==?nickname)????
return?true;????
return?false;????
}????
}????
var?strHelp?=?'輸入$help獲取幫助\n\????
=========?系統(tǒng)命令?========\n\????
**$nick**?[昵稱]?查看或更改昵稱\n\????
**$online**?當前在線人數(shù)\n\????
**$clear**?清空消息\n\????
=========?使用技巧?========\n\????
**給某人發(fā)送消息**?@對方昵稱?消息內(nèi)容(可同時@多個人)\n\????
**發(fā)送圖片**?!圖片url\n\????
**發(fā)送鏈接**?[網(wǎng)址]\n\????
';
xchat是圖形化的軟件,通過命令行應(yīng)該沒法使用,你需要先進入linux的圖形化界面,比如KDE或者是GNOME,然后把軟件安裝一下,應(yīng)該有類似install-sh的腳本,雙擊安裝,然后到安裝目錄運行程序就可以了。
應(yīng)該寫錯了吧?是chattr +i file 設(shè)置文件不能進行修改:即你不能刪除它! +就是賦加的意思,i是保護屬性 所以一起就是賦于文件保護屬性 也就是不能進行修改!