站内消息支持三种类型,admin发送,mobile订阅

This commit is contained in:
yourname
2025-05-15 12:06:17 +00:00
parent 2f171d4335
commit f3042583df
4 changed files with 143 additions and 11 deletions

View File

@@ -39,12 +39,17 @@ export const NotificationsPage = () => {
// 订阅消息频道
newSocket.on('connect', () => {
// 订阅个人频道
newSocket.emit('message:subscribe', `user_${user.id}`);
// 订阅系统频道
newSocket.emit('message:subscribe', 'system');
// 订阅公告频道
newSocket.emit('message:subscribe', 'announce');
setIsSubscribed(true);
});
// 处理实时消息
newSocket.on('message:broadcasted', (newMessage) => {
const handleNewMessage = (newMessage: any) => {
queryClient.setQueryData(['messages'], (oldData: any) => {
if (!oldData) return oldData;
return {
@@ -61,7 +66,12 @@ export const NotificationsPage = () => {
count: oldData.count + 1
};
});
});
};
// 处理广播消息
newSocket.on('message:broadcasted', handleNewMessage);
// 处理频道推送消息
newSocket.on('message:received', handleNewMessage);
// 错误处理
newSocket.on('error', (error) => {
@@ -71,6 +81,8 @@ export const NotificationsPage = () => {
return () => {
if (newSocket) {
newSocket.emit('message:unsubscribe', `user_${user.id}`);
newSocket.emit('message:unsubscribe', 'system');
newSocket.emit('message:unsubscribe', 'announce');
newSocket.disconnect();
}
};