🎉 support client message push

This commit is contained in:
Song
2021-06-13 17:52:41 +08:00
parent fcb48d4ff0
commit 018d252e5d
11 changed files with 485 additions and 6 deletions
+25
View File
@@ -0,0 +1,25 @@
const { tokenStore } = require('./token');
async function pushClientMessage(userPrefix, message) {
let user = tokenStore.get(userPrefix);
if (!user || !user.ws) {
return {
success: false,
message: `客户端未连接`,
};
}
let data = {
title: message.title,
description: message.description,
};
console.log(JSON.stringify(data));
user.ws.send(JSON.stringify(data));
return {
success: true,
message: '消息已发送给 WebSocket 客户端',
};
}
module.exports = {
pushClientMessage,
};
+17 -3
View File
@@ -1,14 +1,25 @@
const { getUserDefaultMethod, checkAccessToken } = require('./token');
const {
getUserDefaultMethod,
checkAccessToken,
checkPrefix,
} = require('./token');
const { pushWeChatMessage } = require('./wechat');
const { pushWeChatCorpMessage } = require('./wechat-corp');
const { pushEmailMessage } = require('./email');
const { pushClientMessage } = require('./client');
const { Message } = require('../models');
async function processMessage(userPrefix, message) {
if (!checkPrefix(userPrefix)) {
return {
success: false,
message: `不存在的前缀:${userPrefix}`,
};
}
if (!checkAccessToken(userPrefix, message.token)) {
return {
success: false,
message: `invalid access token`,
message: `无效的 access token`,
};
}
if (message.email) {
@@ -30,9 +41,12 @@ async function processMessage(userPrefix, message) {
case 'email': // Email message
result = await pushEmailMessage(userPrefix, message);
break;
case 'corp': // WeChar corp message
case 'corp': // WeChat corp message
result = await pushWeChatCorpMessage(userPrefix, message);
break;
case 'client': // Client message
result = await pushClientMessage(userPrefix, message);
break;
default:
result = {
success: false,
+16
View File
@@ -84,10 +84,26 @@ function checkAccessToken(prefix, token) {
}
}
function checkPrefix(prefix) {
let user = tokenStore.get(prefix);
return user !== undefined;
}
function registerWebSocket(prefix, token, ws) {
let user = tokenStore.get(prefix);
if (user && user.accessToken !== '' && user.accessToken === token) {
updateTokenStore(prefix, 'ws', ws);
} else {
ws.terminate();
}
}
module.exports = {
initializeTokenStore,
updateTokenStore,
getUserDefaultMethod,
tokenStore,
checkAccessToken,
checkPrefix,
registerWebSocket,
};