站内消息支持三种类型,admin发送,mobile订阅
This commit is contained in:
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user