🎉 support client message push
This commit is contained in:
@@ -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
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user