Files
ST-Amily2-Chat-Optimisation/server/server.js
2025-11-19 22:49:05 +08:00

2 lines
6.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const _0x1aa31d=_0x1b06;(function(_0x26b555,_0x1e0358){const _0x49f443=_0x1b06,_0x28933c=_0x26b555();while(!![]){try{const _0x4c51ba=parseInt(_0x49f443(0x205))/0x1*(parseInt(_0x49f443(0x209))/0x2)+-parseInt(_0x49f443(0x1fa))/0x3+-parseInt(_0x49f443(0x1f0))/0x4+-parseInt(_0x49f443(0x203))/0x5+-parseInt(_0x49f443(0x202))/0x6+parseInt(_0x49f443(0x20d))/0x7+parseInt(_0x49f443(0x1f1))/0x8*(parseInt(_0x49f443(0x1ee))/0x9);if(_0x4c51ba===_0x1e0358)break;else _0x28933c['push'](_0x28933c['shift']());}catch(_0x486178){_0x28933c['push'](_0x28933c['shift']());}}}(_0xa641,0x96187));const http=require(_0x1aa31d(0x1f9)),WebSocket=require('ws'),PORT=0xbb8,START_TIME=Date[_0x1aa31d(0x1f5)]();let PEAK_USERS=0x0;const server=http['createServer']((_0x47d6fc,_0x43f5e1)=>{const _0x165d38=_0x1aa31d;_0x47d6fc['method']===_0x165d38(0x204)&&_0x47d6fc[_0x165d38(0x20b)]==='/'?(_0x43f5e1[_0x165d38(0x213)](0xc8,{'Content-Type':_0x165d38(0x1f8)}),_0x43f5e1[_0x165d38(0x1fc)](getDashboardHtml())):(_0x43f5e1[_0x165d38(0x213)](0x194),_0x43f5e1[_0x165d38(0x1fc)]('Not\x20Found'));}),wss=new WebSocket[(_0x1aa31d(0x20c))]({'server':server});console[_0x1aa31d(0x212)]('Amily2\x20服务已启动监听端口:\x20'+PORT),wss['on']('connection',function connection(_0x4519a6){const _0x34133a=_0x1aa31d;updateStats(),_0x4519a6['on']('close',function(){updateStats();}),_0x4519a6['on']('error',_0x371861=>{const _0x49668e=_0x1b06;console[_0x49668e(0x1f6)](_0x49668e(0x20a),_0x371861);}),_0x4519a6[_0x34133a(0x207)]=!![],_0x4519a6['on'](_0x34133a(0x1f7),heartbeat);});function updateStats(){const _0x1e5943=_0x1aa31d,_0x456b86=wss['clients'][_0x1e5943(0x20e)];if(_0x456b86>PEAK_USERS)PEAK_USERS=_0x456b86;broadcastCount(_0x456b86),console[_0x1e5943(0x212)](_0x1e5943(0x211)+_0x456b86+_0x1e5943(0x210)+PEAK_USERS);}function _0x1b06(_0x58d842,_0x29bd6a){const _0xa641d5=_0xa641();return _0x1b06=function(_0x1b06bd,_0x78627f){_0x1b06bd=_0x1b06bd-0x1ee;let _0x23e0f9=_0xa641d5[_0x1b06bd];return _0x23e0f9;},_0x1b06(_0x58d842,_0x29bd6a);}function _0xa641(){const _0x516b53=['http','2588541Tvtuiu','send','end','readyState','</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22label\x22>历史最高峰值</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22footer\x22>\x0a\x20\x20\x20\x20\x20\x20系统已运行<br>\x0a\x20\x20\x20\x20\x20\x20','forEach','stringify','Server\x20is\x20running\x20on\x20port\x20','5046024PJGQYu','4221235BYDloO','GET','20OOSYPC','clients','isAlive','\x0a<!DOCTYPE\x20html>\x0a<html>\x0a<head>\x0a\x20\x20<meta\x20charset=\x22UTF-8\x22>\x0a\x20\x20<meta\x20name=\x22viewport\x22\x20content=\x22width=device-width,\x20initial-scale=1.0\x22>\x0a\x20\x20<title>Amily2\x20在线统计仪表盘</title>\x0a\x20\x20<style>\x0a\x20\x20\x20\x20body\x20{\x20font-family:\x20\x27Segoe\x20UI\x27,\x20sans-serif;\x20background:\x20#121212;\x20color:\x20#e0e0e0;\x20display:\x20flex;\x20justify-content:\x20center;\x20align-items:\x20center;\x20height:\x20100vh;\x20margin:\x200;\x20}\x0a\x20\x20\x20\x20.card\x20{\x20background:\x20#1e1e1e;\x20padding:\x2040px;\x20border-radius:\x2020px;\x20box-shadow:\x200\x2015px\x2030px\x20rgba(0,0,0,0.5);\x20text-align:\x20center;\x20width:\x20320px;\x20border:\x201px\x20solid\x20#333;\x20}\x0a\x20\x20\x20\x20h1\x20{\x20margin:\x200\x200\x2030px;\x20font-size:\x2022px;\x20color:\x20#c0bde4;\x20letter-spacing:\x201px;\x20}\x0a\x20\x20\x20\x20.stat-group\x20{\x20display:\x20flex;\x20justify-content:\x20space-around;\x20margin-bottom:\x2030px;\x20}\x0a\x20\x20\x20\x20.stat\x20{\x20flex:\x201;\x20}\x0a\x20\x20\x20\x20.number\x20{\x20font-size:\x2042px;\x20font-weight:\x20bold;\x20color:\x20#4caf50;\x20margin-bottom:\x205px;\x20}\x0a\x20\x20\x20\x20.number.peak\x20{\x20color:\x20#ff9800;\x20font-size:\x2028px;\x20margin-top:\x2010px;\x20}\x0a\x20\x20\x20\x20.label\x20{\x20font-size:\x2012px;\x20color:\x20#888;\x20text-transform:\x20uppercase;\x20letter-spacing:\x201px;\x20}\x0a\x20\x20\x20\x20.footer\x20{\x20margin-top:\x2030px;\x20font-size:\x2012px;\x20color:\x20#555;\x20border-top:\x201px\x20solid\x20#333;\x20padding-top:\x2020px;\x20}\x0a\x20\x20\x20\x20.status-dot\x20{\x20height:\x2010px;\x20width:\x2010px;\x20background-color:\x20#4caf50;\x20border-radius:\x2050%;\x20display:\x20inline-block;\x20margin-right:\x205px;\x20}\x0a\x20\x20</style>\x0a\x20\x20<script>\x0a\x20\x20\x20\x20setInterval(()\x20=>\x20location.reload(),\x205000);\x20//\x20每5秒自动刷新\x0a\x20\x20</script>\x0a</head>\x0a<body>\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<h1><span\x20class=\x22status-dot\x22></span>Amily2\x20监控中心</h1>\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20<div\x20class=\x22stat\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22number\x22>','22514uMkgqM','连接错误:','url','Server','4995928PgewZK','size','floor',',\x20峰值:\x20','当前在线:\x20','log','writeHead','27WVnndY','OPEN','2539568jrVMyW','7623832CSloWj','小时\x20','</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22label\x22>当前在线魔法师</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22stat\x22\x20style=\x22margin-top:\x2020px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22number\x20peak\x22>','online_count','now','error','pong','text/html;\x20charset=utf-8'];_0xa641=function(){return _0x516b53;};return _0xa641();}function broadcastCount(_0x22d3c3){const _0xa9f236=_0x1aa31d,_0x3bf5e1=JSON[_0xa9f236(0x200)]({'type':_0xa9f236(0x1f4),'count':_0x22d3c3});wss[_0xa9f236(0x206)]['forEach'](function _0x3eaf8f(_0x3a81bc){const _0x475c44=_0xa9f236;_0x3a81bc[_0x475c44(0x1fd)]===WebSocket[_0x475c44(0x1ef)]&&_0x3a81bc[_0x475c44(0x1fb)](_0x3bf5e1);});}const interval=setInterval(function ping(){const _0x13af70=_0x1aa31d;wss[_0x13af70(0x206)][_0x13af70(0x1ff)](function _0x1567cd(_0x566b7a){const _0x198813=_0x13af70;if(_0x566b7a[_0x198813(0x207)]===![])return _0x566b7a['terminate']();_0x566b7a['isAlive']=![],_0x566b7a['ping']();});},0x7530);function heartbeat(){this['isAlive']=!![];}function getDashboardHtml(){const _0x540a59=_0x1aa31d,_0x18ab4a=Math['floor']((Date['now']()-START_TIME)/0x3e8),_0x1f8adc=Math[_0x540a59(0x20f)](_0x18ab4a/0x15180),_0x313818=Math[_0x540a59(0x20f)](_0x18ab4a%0x15180/0xe10),_0x5aeee0=Math['floor'](_0x18ab4a%0xe10/0x3c),_0xaf6709=_0x18ab4a%0x3c,_0x2b024d=wss[_0x540a59(0x206)][_0x540a59(0x20e)];return _0x540a59(0x208)+_0x2b024d+_0x540a59(0x1f3)+PEAK_USERS+_0x540a59(0x1fe)+_0x1f8adc+'天\x20'+_0x313818+_0x540a59(0x1f2)+_0x5aeee0+'分\x20'+_0xaf6709+'秒\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</body>\x0a</html>\x0a\x20\x20';}server['listen'](PORT,()=>{const _0x3eb9ad=_0x1aa31d;console[_0x3eb9ad(0x212)](_0x3eb9ad(0x201)+PORT);});