| | |
| | | // 初始化会话 |
| | | this.initConversation(); |
| | | } |
| | | |
| | | |
| | | // 加载消息 |
| | | this.loadMessages(); |
| | | |
| | | // 初始化WebSocket连接 |
| | | this.initWebSocket(); |
| | | }, |
| | | onUnload() { |
| | | // 清理定时器 |
| | |
| | | if (this.readTimer) { |
| | | clearTimeout(this.readTimer); |
| | | } |
| | | |
| | | // 关闭WebSocket |
| | | this.closeWebSocket(); |
| | | }, |
| | |
| | | let self = this; |
| | | self._get('user.user/detail', {}, res => { |
| | | self.currentUser = res.data.userInfo; |
| | | // 初始化WebSocket连接 |
| | | self.initWebSocket(); |
| | | }) |
| | | }, |
| | | |
| | |
| | | |
| | | self.hasMore = self.messages.length < res.data.messages.total; |
| | | self.loadMore = false; |
| | | // 滚动到底部 |
| | | self.$nextTick(() => { |
| | | self.scrollToBottom(); |
| | | }); |
| | | self.page++; |
| | | if (self.page == 2) { |
| | | // 获取目标用户信息 |
| | |
| | | if (!this.inputMessage.trim()) return; |
| | | |
| | | const content = self.inputMessage.trim(); |
| | | |
| | | self._post('plus.business.chat.chat/sendMessage', { |
| | | self.sendWebSocketMessage(content); |
| | | /* self._post('plus.business.chat.chat/sendMessage', { |
| | | conversation_id: self.conversationId, |
| | | business_card_id: self.businessCardId, |
| | | content: content |
| | | }, res => { |
| | | if (res.code === 1) { |
| | | // 添加到消息列表 |
| | | self.messages.push(res.data); |
| | | self.messages.push(res.data.message); |
| | | self.inputMessage = ''; |
| | | // 滚动到底部 |
| | | self.$nextTick(() => { |
| | | self.scrollToBottom(); |
| | | }); |
| | | // 发送WebSocket消息 |
| | | self.sendWebSocketMessage(res.data); |
| | | self.sendWebSocketMessage(res.data.ws_message); |
| | | } else { |
| | | self.showError(res.msg || '发送失败'); |
| | | } |
| | | }); |
| | | }); */ |
| | | }, |
| | | |
| | | // WebSocket相关方法 |
| | |
| | | console.log('WebSocket已连接'); |
| | | return; |
| | | } |
| | | console.log(currentUserId); |
| | | // 获取当前用户ID |
| | | const currentUserId = this.currentUser.user_id; |
| | | |
| | | // 构建WebSocket连接URL |
| | | const wsUrl = `ws://localhost:8282?user_id=${currentUserId}`; |
| | | // 构建WebSocket连接URL - 使用名片聊天专用端口2349 |
| | | const wsUrl = `ws://localhost:2349?user_id=${currentUserId}`; |
| | | |
| | | try { |
| | | // 创建WebSocket连接 |
| | |
| | | this.socketTask.onOpen(() => { |
| | | console.log('WebSocket已打开'); |
| | | this.isOnline = true; |
| | | |
| | | // 发送心跳包 |
| | | this.startHeartbeat(); |
| | | }); |
| | |
| | | // 监听WebSocket消息事件 |
| | | this.socketTask.onMessage((res) => { |
| | | console.log('收到WebSocket消息:', res.data); |
| | | |
| | | try { |
| | | const data = JSON.parse(res.data); |
| | | if (data.Online == 'on') { |
| | | this.isOnline = false; |
| | | } else { |
| | | this.isOnline = true; |
| | | } |
| | | this.handleWebSocketMessage(data); |
| | | } catch (error) { |
| | | console.error('解析WebSocket消息失败:', error); |
| | |
| | | |
| | | // 发送WebSocket消息 |
| | | sendWebSocketMessage(message) { |
| | | let self = this; |
| | | if (!this.socketTask || !this.isOnline) { |
| | | console.warn('WebSocket未连接,无法发送消息'); |
| | | self.initWebSocket(); |
| | | return; |
| | | } |
| | | |
| | | const wsMessage = { |
| | | type: 'message', |
| | | user_id: this.currentUser.user_id, |
| | | to_user_id: this.targetUserId, |
| | | content: message.content, |
| | | content: message, |
| | | conversation_id: this.conversationId, |
| | | business_card_id: this.businessCardId, |
| | | chat_id: message.chat_id |
| | | app_id: this.currentUser.grade.app_id |
| | | }; |
| | | |
| | | try { |
| | | this.socketTask.send({ |
| | | self.socketTask.send({ |
| | | data: JSON.stringify(wsMessage) |
| | | }); |
| | | self.page = 1 |
| | | self.loadMessages() |
| | | self.inputMessage = ''; |
| | | console.log('WebSocket消息发送成功:', wsMessage); |
| | | } catch (error) { |
| | | console.error('发送WebSocket消息失败:', error); |
| | |
| | | user_id: this.currentUser.user_id, |
| | | to_user_id: this.targetUserId |
| | | }; |
| | | |
| | | try { |
| | | this.socketTask.send({ |
| | | data: JSON.stringify(heartbeatMsg) |
| | |
| | | console.error('发送心跳失败:', error); |
| | | } |
| | | } |
| | | }, 30000); // 30秒 |
| | | }, 3000); // 30秒 |
| | | }, |
| | | |
| | | // 标记消息为已读 |
| | |
| | | chat_id: chatId, |
| | | conversation_id: this.conversationId |
| | | }; |
| | | |
| | | console.log(readMsg); |
| | | try { |
| | | this.socketTask.send({ |
| | | data: JSON.stringify(readMsg) |
| | |
| | | // 发送关闭消息 |
| | | const closeMsg = { |
| | | type: 'close', |
| | | user_id: this.currentUser.user_id |
| | | user_id: this.currentUser.user_id, |
| | | to_user_id: this.targetUserId |
| | | }; |
| | | |
| | | try { |
| | |
| | | |
| | | // 滚动相关方法 |
| | | scrollToBottom() { |
| | | let self=this; |
| | | this.$nextTick(() => { |
| | | this.scrollTop = this.oldScrollTop + 1; |
| | | console.log(self.scrollTop); |
| | | self.scrollTop = self.oldScrollTop + 1; |
| | | }); |
| | | }, |
| | | |