Browse Source

Merge branch 'dev' of http://git.ycjcjy.com/zhiyuxing/miniapp-v3 into dev

1007395918@qq.com 5 years ago
parent
commit
99c54451fd
5 changed files with 52 additions and 8 deletions
  1. 4
    4
      config/dev.js
  2. 1
    1
      project.config.json
  3. 1
    1
      src/app.js
  4. 8
    2
      src/pages/im/index.js
  5. 38
    0
      src/utils/im.js

+ 4
- 4
config/dev.js View File

9
     // WSS_HOST: '"wss://dev.pawoma.cn"',
9
     // WSS_HOST: '"wss://dev.pawoma.cn"',
10
     // HOST: '"https://dev.jinchengjiaye.com"',//测试
10
     // HOST: '"https://dev.jinchengjiaye.com"',//测试
11
     // WSS_HOST: '"wss://dev.jinchengjiaye.com"',
11
     // WSS_HOST: '"wss://dev.jinchengjiaye.com"',
12
-    HOST: '"https://lt.pawoma.cn"',
13
-    WSS_HOST: '"wss://lt.pawoma.cn"',
14
-    // HOST: '"http://127.0.0.1:8080"',
15
-    // WSS_HOST: '"ws://127.0.0.1:8080"',
12
+    // HOST: '"https://lt.pawoma.cn"',
13
+    // WSS_HOST: '"wss://lt.pawoma.cn"',
14
+    HOST: '"http://127.0.0.1:8080"',
15
+    WSS_HOST: '"ws://127.0.0.1:8080"',
16
     Version: 'V3.5.9'
16
     Version: 'V3.5.9'
17
   },
17
   },
18
   weapp: {},
18
   weapp: {},

+ 1
- 1
project.config.json View File

2
 	"miniprogramRoot": "dist/",
2
 	"miniprogramRoot": "dist/",
3
 	"projectname": "mini-chengjiao",
3
 	"projectname": "mini-chengjiao",
4
 	"description": "知与行联调",
4
 	"description": "知与行联调",
5
-	"appid": "wxd6f47a9bb3052175",
5
+	"appid": "wxd9ee3a9480a4e544",
6
 	"setting": {
6
 	"setting": {
7
 		"urlCheck": false,
7
 		"urlCheck": false,
8
 		"es6": false,
8
 		"es6": false,

+ 1
- 1
src/app.js View File

285
             const { unReadNum } = info
285
             const { unReadNum } = info
286
             store.dispatch({ type: ASSIGN_UNREADNUM, payload: { unReadNum } });
286
             store.dispatch({ type: ASSIGN_UNREADNUM, payload: { unReadNum } });
287
             socket.createSocket({ id: personId });
287
             socket.createSocket({ id: personId });
288
-            socket.wss.onMessage(data => {
288
+            socket.onMessage(data => {
289
               store.dispatch({ type: INCREASE_UNREADNUM })
289
               store.dispatch({ type: INCREASE_UNREADNUM })
290
             })
290
             })
291
           })
291
           })

+ 8
- 2
src/pages/im/index.js View File

58
   }
58
   }
59
 
59
 
60
   originList = []
60
   originList = []
61
+
62
+  unSubscribeMessage = () => {}
63
+
61
   componentWillMount() {
64
   componentWillMount() {
62
     savePoint({
65
     savePoint({
63
       event: 'detail',
66
       event: 'detail',
70
       })
73
       })
71
       console.log('在线咨询')
74
       console.log('在线咨询')
72
     })
75
     })
76
+
77
+    this.unSubscribeMessage = () => {}
73
   }
78
   }
74
 
79
 
75
   componentDidMount() {
80
   componentDidMount() {
157
         });
162
         });
158
       })
163
       })
159
 
164
 
160
-      socket.wss.onMessage(res => {
165
+      this.unSubscribeMessage = socket.onMessage(res => {
161
         const data = JSON.parse(res.data)
166
         const data = JSON.parse(res.data)
162
 
167
 
163
         console.log('receive message ==>', data)
168
         console.log('receive message ==>', data)
167
         } else {
172
         } else {
168
           this.handlerRecive(data)
173
           this.handlerRecive(data)
169
         }
174
         }
170
-      })
175
+      }, true)
171
     })
176
     })
172
   }
177
   }
173
 
178
 
175
     // socket.closeSocket()
180
     // socket.closeSocket()
176
     const { recordId } = this.state
181
     const { recordId } = this.state
177
     recordId && updatePoint(recordId)
182
     recordId && updatePoint(recordId)
183
+    this.unSubscribeMessage()
178
   }
184
   }
179
 
185
 
180
   sendCardMsg = () => {
186
   sendCardMsg = () => {

+ 38
- 0
src/utils/im.js View File

10
     this.lockReconnect = false
10
     this.lockReconnect = false
11
     this.limit = 12
11
     this.limit = 12
12
     this.selfClose = false
12
     this.selfClose = false
13
+    this.timeTicker = undefined
14
+    this.messageListeners = []
15
+    this.imMessageListener = undefined
13
   }
16
   }
14
 
17
 
15
   reconnect() {
18
   reconnect() {
54
       success && success(res)
57
       success && success(res)
55
     })
58
     })
56
 
59
 
60
+    this.wss.onMessage((data) => {
61
+      if (data.data === 'ping') {
62
+        this.wss.send({ data: 'pong'  })
63
+      } else if (data.data === 'pong') {
64
+        console.log('[websocket]: 接收心跳')
65
+      } else {
66
+        if (this.imMessageListener) {
67
+          this.imMessageListener(data)
68
+        } else {
69
+          this.messageListeners.forEach(fn => fn(data))
70
+        }
71
+      }
72
+    })
73
+
57
     this.wss.onClose(res => {
74
     this.wss.onClose(res => {
58
       console.log('已关闭', res)
75
       console.log('已关闭', res)
59
       close && close(res)
76
       close && close(res)
74
         this.reconnect()
91
         this.reconnect()
75
       }
92
       }
76
     })
93
     })
94
+
95
+    this.timeTicker = setInterval(() => {
96
+      if (this.limit <= 0) {
97
+        clearInterval(this.timeTicker)
98
+      }
99
+
100
+      if (this.socketOpen) {
101
+        this.wss.send({ data: 'ping', success: () => console.log('[websocket]: 发送心跳') })
102
+      }
103
+    }, 60000)
77
   };
104
   };
78
 
105
 
79
   //组装消息
106
   //组装消息
130
           })
157
           })
131
     }
158
     }
132
   }
159
   }
160
+
161
+  onMessage(callback, isIMPage) {
162
+    if (isIMPage) {
163
+      this.messageListeners = [callback]
164
+    } else {
165
+      this.imMessageListener = callback
166
+
167
+      // 取消订阅
168
+      return () => this.imMessageListener = undefined
169
+    }
170
+  }
133
 }
171
 }
134
 
172
 
135
 export default new IMManager()
173
 export default new IMManager()