feat: 完成v10.1.0版本大更新,新增密保系统、勋章、任务、排行榜等功能
### 变更详情 1. 新增密保问题系统,支持8种预置验证问题,多场景支持多验证方式 2. 新增勋章管理模块,包含勋章配置、用户勋章关联管理 3. 新增每日任务系统,支持任务配置和用户进度追踪 4. 新增赛季排行榜功能,支持周/月赛季排行与奖励结算 5. 新增信息流推荐权重配置管理 6. 重构服务路径分层,按设备/网络/数据分类管理服务 7. 优化Feed请求参数截断逻辑,避免URL过长 8. 新增等级工具类,统一处理等级颜色与称号展示 9. 新增屏幕共享共享信令Provider,复用传输服务实例 10. 新增Android/iOS分享适配与桌面小组件支持 11. 清理旧版测试脚本,新增部署维护脚本 12. 完善用户注销关联数据清理逻辑
This commit is contained in:
@@ -63,6 +63,13 @@ class SnapdropServer {
|
||||
peer.socket.on('error', console.error);
|
||||
this._keepAlive(peer);
|
||||
|
||||
this._send(peer, {
|
||||
type: 'registered',
|
||||
id: peer.id,
|
||||
fingerprint: peer.fingerprint || '',
|
||||
userId: peer.userId || ''
|
||||
});
|
||||
|
||||
this._send(peer, {
|
||||
type: 'display-name',
|
||||
message: {
|
||||
@@ -118,6 +125,17 @@ class SnapdropServer {
|
||||
break;
|
||||
case 'heartbeat':
|
||||
sender.lastBeat = Date.now();
|
||||
this._send(sender, {
|
||||
type: 'heartbeat_ack',
|
||||
timestamp: Date.now()
|
||||
});
|
||||
break;
|
||||
case 'discover':
|
||||
this._handleDiscover(sender, message);
|
||||
break;
|
||||
case 'ping':
|
||||
sender.lastBeat = Date.now();
|
||||
this._send(sender, { type: 'pong', timestamp: Date.now() });
|
||||
break;
|
||||
case 'textMessage':
|
||||
this._handleTextMessage(sender, message);
|
||||
@@ -142,7 +160,7 @@ class SnapdropServer {
|
||||
break;
|
||||
}
|
||||
|
||||
const handledTypes = ['disconnect', 'pong', 'register', 'discoverMyDevices', 'transportNegotiate', 'wsRelay', 'pair-request', 'pairRequest', 'pair-accept', 'pairAccept', 'pair-reject', 'pairReject', 'heartbeat', 'textMessage', 'fileMeta', 'canvas-stroke', 'canvas-cursor', 'canvas-join', 'canvas-leave', 'canvas-snapshot'];
|
||||
const handledTypes = ['disconnect', 'pong', 'register', 'discoverMyDevices', 'discover', 'transportNegotiate', 'wsRelay', 'pair-request', 'pairRequest', 'pair-accept', 'pairAccept', 'pair-reject', 'pairReject', 'heartbeat', 'ping', 'textMessage', 'fileMeta', 'canvas-stroke', 'canvas-cursor', 'canvas-join', 'canvas-leave', 'canvas-snapshot'];
|
||||
if (message.to && !handledTypes.includes(message.type)) {
|
||||
let recipientId = message.to;
|
||||
let recipient = this._resolveTarget(sender, recipientId);
|
||||
@@ -208,6 +226,22 @@ class SnapdropServer {
|
||||
});
|
||||
}
|
||||
|
||||
_handleDiscover(sender, message) {
|
||||
const allPeers = [];
|
||||
for (const roomId in this._rooms) {
|
||||
for (const peerId in this._rooms[roomId]) {
|
||||
const peer = this._rooms[roomId][peerId];
|
||||
if (peer.id !== sender.id) {
|
||||
allPeers.push(peer.getInfo());
|
||||
}
|
||||
}
|
||||
}
|
||||
this._send(sender, {
|
||||
type: 'discover_response',
|
||||
devices: allPeers
|
||||
});
|
||||
}
|
||||
|
||||
_handleDiscoverMyDevices(sender, message) {
|
||||
const payload = message.payload || message.data || {};
|
||||
const userId = payload.userId || message.userId || sender.userId;
|
||||
|
||||
Reference in New Issue
Block a user