## WebSocket客户端 目录 - 全局消息监听 - 单页面消息监听 - 发送消息 > 基于WebSocket服务器,hotgo还对客户端的上做了一些封装,使其使用起来更加方便 - [WebSocket服务器](sys-websocket-server.md) ### 全局消息监听 - 所有全局的消息监听都在这里 - 文件路径:web/src/utils/websocket/registerMessage.ts ```ts import { TABS_ROUTES } from '@/store/mutation-types'; import { SocketEnum } from '@/enums/socketEnum'; import { useUserStoreWidthOut } from '@/store/modules/user'; import { notificationStoreWidthOut } from '@/store/modules/notification'; import { addOnMessage, WebSocketMessage } from '@/utils/websocket/index'; // 注册全局消息监听 export function registerGlobalMessage() { // 心跳 addOnMessage(SocketEnum.EventPing, function (_message: WebSocketMessage) { // console.log('ping..'); }); // 强制退出 addOnMessage(SocketEnum.EventKick, function (_message: WebSocketMessage) { const useUserStore = useUserStoreWidthOut(); useUserStore.logout().then(() => { // 移除标签页 localStorage.removeItem(TABS_ROUTES); location.reload(); }); }); // 消息通知 addOnMessage(SocketEnum.EventNotice, function (message: WebSocketMessage) { const notificationStore = notificationStoreWidthOut(); notificationStore.triggerNewMessages(message.data); }); // 更多全局消息处理都可以在这里注册 // ... } ``` #### 单页面消息监听 - 当你只需要某个页面使用WebSocket,这将是一个不错的选择,下面是一个简单的演示例子 - 文件路径:web/src/views/addons/hgexample/portal/websocketTest.vue ```vue ``` #### 发送消息 - 向服务器发送一条消息 ```ts import { sendMsg } from '@/utils/websocket'; const event = 'admin/addons/hgexample/testMessage'; // 消息路由 const data: object | null = { // 消息内容 message: 'message content...', }; const isRetry = false; // 发送失败是否重试,不传默认为true // 基本使用 sendMsg(event, data); // 无消息内容 sendMsg(event); // 发送失败不重试 sendMsg(event, data, isRetry); ```