import { messageTypes } from '@/enum/socketMessage.js' // 开始符号和结束符号分别为 '##' 和 '%%', 分隔符为 && // 开始符号 const startStr = '##'; // 分隔符号 const splitStr = '&&'; // 结束符号 const endStr = '%%'; // 校验格式 function verificationMessahe(message) { if (!message || message == '') { return false; } if (!(typeof message == 'string')) { return false; } if (!message.startsWith(startStr)) { return false; } if (!message.endsWith(endStr)) { return false; } return true; } /** * 解析出类型和内容 * @param {*} message socket消息中的data字段 * @returns */ function decodeMessage(message) { if (!verificationMessahe(message)) { return; } const parts = message.slice(startStr.length, -endStr.length).split(splitStr); const type = parts[0]; let data = JSON.parse(parts[1]); return { type: messageTypes.find((item) => item.value == type).value, data: data }; } /** * 生成指定格式的消息字符串 * @param {*} type 消息类型 * @param {*} data 消息内容 * @returns 生成的消息字符串 */ function encodeMessage(type, data) { return `${startStr}${type}${splitStr}${JSON.stringify(data)}${endStr}`; } export { verificationMessahe, decodeMessage, encodeMessage, messageTypes };