Your Name 3 anos atrás
pai
commit
74c69fd3e6

+ 1
- 1
config/dev.js Ver arquivo

@@ -5,7 +5,7 @@ module.exports = {
5 5
   defineConstants: {
6 6
     HOST: '"https://xlk.njyz.tech"',
7 7
     // HOST: '"http://127.0.0.1:8081"',
8
-    WSS_HOST: '"ws://xlk.njyz.tech"',
8
+    WSS_HOST: '"wss://xlk.njyz.tech"',
9 9
     OSS_PATH: '"https://xlk-assets.oss-accelerate.aliyuncs.com/"',
10 10
     OSS_FAST_PATH: '"https://xlk-assets.oss-accelerate.aliyuncs.com/"',
11 11
     ICON_FONT: '"https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/css/iconfont.ttf"',

+ 12
- 5
src/pages/chat/chatDetail/index.jsx Ver arquivo

@@ -5,7 +5,7 @@ import withLayout from '@/layout'
5 5
 import { API_QUERY_USERINFO_BYID } from '@/constants/api'
6 6
 import { ROLE_CODE } from '@/constants/user'
7 7
 import { uploadFiles, fetch } from '@/utils/request'
8
-import { queryChatHistory } from '@/services/chat'
8
+import { queryChatHistory, setMessageReaded } from '@/services/chat'
9 9
 import im from '@/utils/im'
10 10
 import { getDateForHumans } from '@/utils/chatDate'
11 11
 import '@/assets/css/iconfont.css'
@@ -117,10 +117,6 @@ export default withLayout((props) => {
117 117
         setReceiver(res)
118 118
         getChatHistory({ pageNumber: 1 })
119 119
       })
120
-
121
-      const unsubsribe = im.listen((message) => {
122
-
123
-      })
124 120
     } else {
125 121
       Taro.showToast({
126 122
         title: '无聊天对象,请退出重试',
@@ -130,6 +126,17 @@ export default withLayout((props) => {
130 126
     // eslint-disable-next-line react-hooks/exhaustive-deps
131 127
   }, [friend])
132 128
 
129
+  useEffect(() => {
130
+    return im.listen((message) => {
131
+      const receiveData = JSON.parse(message)
132
+      setPageList(PageList.concat(receiveData))
133
+      // 滚动到底部
134
+      scroll()
135
+      // 更新记录为已读
136
+      setMessageReaded(receiveData.chatId)
137
+    })
138
+  }, [PageList, scroll])
139
+
133 140
   return (
134 141
     <view className='chatDetail flex-v'>
135 142
       <view className='flex-item'>

+ 6
- 2
src/utils/im/listeners.js Ver arquivo

@@ -1,6 +1,6 @@
1 1
 
2 2
 export default () => {
3
-  const listeners = []
3
+  let listeners = []
4 4
 
5 5
   function getIndex(name) {
6 6
     for (let i = 0; i < listeners.length; i += 1) {
@@ -17,7 +17,11 @@ export default () => {
17 17
     listeners = listeners.filter((f) => f.name !== name)
18 18
   }
19 19
 
20
-  function append(name, fun) {
20
+  function append(fun, name) {
21
+    if (!name) {
22
+      name = Math.random().toString(36).substring(2)
23
+    }
24
+
21 25
     const pos = getIndex(name)
22 26
     if (pos === -1) {
23 27
       listeners.push({ name, fun })

+ 2
- 2
src/utils/im/sdk.js Ver arquivo

@@ -60,7 +60,7 @@ export default function IMSDK() {
60 60
       }).then((task) => {
61 61
         console.log(`[${now()}]`, '[WS] [connect]', task)
62 62
         instanceRef.current = task
63
-  
63
+
64 64
         task.onOpen(function () {
65 65
           console.log(`[${now()}]`, '[WS] [onOpen]', paramsRef.current)
66 66
           resolve()
@@ -68,7 +68,7 @@ export default function IMSDK() {
68 68
 
69 69
         task.onMessage(function (msg) {
70 70
           console.info(`[${now()}]`, '[WS] [onMessage]', msg)
71
-          instanceRef.onMessage().forEach((f) => f(msg))
71
+          instanceRef.onMessage().forEach((f) => f(msg.data))
72 72
         })
73 73
 
74 74
         task.onError(function (error) {