优化
This commit is contained in:
		
							parent
							
								
									0177a27b33
								
							
						
					
					
						commit
						a110466245
					
				
							
								
								
									
										22
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								index.js
									
									
									
									
									
								
							@ -13,38 +13,38 @@ const DAD = (module.exports = class RpcSocket extends ws {
 | 
				
			|||||||
  static upgrade(ws) {
 | 
					  static upgrade(ws) {
 | 
				
			||||||
    ws.__proto__ = DAD.prototype
 | 
					    ws.__proto__ = DAD.prototype
 | 
				
			||||||
    ws.sid = randomBytes(16).toString('hex')
 | 
					    ws.sid = randomBytes(16).toString('hex')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ws.onmessage = async ({ data }) => {
 | 
					    ws.onmessage = async ({ data }) => {
 | 
				
			||||||
      //      console.log('onmessage 被调用')
 | 
					      // console.log('[onmessage] 被调用在 data =', data)
 | 
				
			||||||
      try {
 | 
					      try {
 | 
				
			||||||
        let { rpcType, rpcHow, rpcWhat, randomEvent, rpcResult } = JSON.parse(data)
 | 
					        let { rpcType, rpcHow, rpcWhat, randomEvent, rpcResult } = JSON.parse(data)
 | 
				
			||||||
        //        console.log('message data parsed to obj=',obj)
 | 
					        // console.log('message data parsed to ', {rpcType, rpcHow, rpcWhat, randomEvent, rpcResult})
 | 
				
			||||||
        switch (rpcType) {
 | 
					        switch (rpcType) {
 | 
				
			||||||
          case 'SEND_REQUEST':
 | 
					          case 'SEND_REQUEST':
 | 
				
			||||||
            // 接收到异步的远程调用
 | 
					            // 接收到异步的远程调用
 | 
				
			||||||
            //            console.log(`被动方 收到 SEND_REQUEST_ASYNC: rpcHow=${obj.rpcHow}, rpcWhat=${JSON.stringify(obj.rpcWhat)}`)
 | 
					            // console.log(`被调方 收到 SEND_REQUEST: rpcHow=${rpcHow}, rpcWhat=${JSON.stringify(rpcWhat)}`)
 | 
				
			||||||
            let rpcResult
 | 
					 | 
				
			||||||
            if (ws.hasOwnProperty(rpcHow)) rpcResult = await ws[rpcHow](rpcWhat)
 | 
					            if (ws.hasOwnProperty(rpcHow)) rpcResult = await ws[rpcHow](rpcWhat)
 | 
				
			||||||
            else rpcResult = { _state: 'error', error: 'unknown rpcHow' }
 | 
					            else rpcResult = { _state: 'ERROR', _stateMsg: `unknown rpcHow=${rpcHow}` }
 | 
				
			||||||
            if (randomEvent) {
 | 
					            if (randomEvent) {
 | 
				
			||||||
              ws.send(JSON.stringify({ rpcType: 'SEND_RESULT', randomEvent, rpcResult })) // 返回结果给远程
 | 
					              ws.send(JSON.stringify({ rpcType: 'SEND_RESULT', randomEvent, rpcResult })) // 返回结果给远程
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
          case 'SEND_RESULT':
 | 
					          case 'SEND_RESULT':
 | 
				
			||||||
            // 接收到远程返回的结果
 | 
					            // 接收到远程返回的结果
 | 
				
			||||||
            //            console.log('主动方 收到 SEND_RESULT: rpcResult=', obj.rpcResult)
 | 
					            // console.log('主调方 收到 SEND_RESULT: rpcResult=', rpcResult)
 | 
				
			||||||
            ws.emit(randomEvent, rpcResult)
 | 
					            ws.emit(randomEvent, rpcResult)
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
          case 'SEND_NOTIFY':
 | 
					          case 'SEND_NOTIFY':
 | 
				
			||||||
          default:
 | 
					          default:
 | 
				
			||||||
            // 接收到同步的远程调用 或者 标准ws的send(...)
 | 
					            // 接收到同步的远程调用 或者 标准ws的send(...)
 | 
				
			||||||
            //            console.log(`SEND_REQUEST_SYNC message: rpcHow=${obj.rpcHow}, rpcWhat=${JSON.stringify(obj.rpcWhat)}`)
 | 
					            // console.log(`被调方 收到 SEND_NOFITY: rpcHow=${rpcHow}, rpcWhat=${JSON.stringify(rpcWhat)}`)
 | 
				
			||||||
            if (ws.hasOwnProperty(rpcHow)) ws[rpcHow](rpcWhat)
 | 
					            if (ws.hasOwnProperty(rpcHow)) ws[rpcHow](rpcWhat)
 | 
				
			||||||
            else if (ws.eventNames().indexOf(rpcHow) >= 0) ws.emit(rpcHow, rpcWhat)
 | 
					            else if (ws.eventNames().indexOf(rpcHow) >= 0) ws.emit(rpcHow, rpcWhat)
 | 
				
			||||||
            else console.log('[onmessage] unknown rpc: ', rpcHow, rpcWhat)
 | 
					            else console.error('[onmessage] unknown rpc: ', rpcHow, rpcWhat)
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      } catch (exception) {
 | 
					      } catch (exception) {
 | 
				
			||||||
        console.error('[onmessage] invalid rpc data: ', data)
 | 
					        console.error('[onmessage] invalid rpc data: ', data, exception)
 | 
				
			||||||
        return
 | 
					        return
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -88,7 +88,7 @@ const DAD = (module.exports = class RpcSocket extends ws {
 | 
				
			|||||||
        setTimeout(() => {
 | 
					        setTimeout(() => {
 | 
				
			||||||
          if (this.eventNames().indexOf(randomEvent) >= 0) {
 | 
					          if (this.eventNames().indexOf(randomEvent) >= 0) {
 | 
				
			||||||
            this.removeAllListeners(randomEvent)
 | 
					            this.removeAllListeners(randomEvent)
 | 
				
			||||||
            rpcCallback({ _state: 'RPC_REQUEST_TIMEOUT', message: `RpcSocket sendRequest timeout: ${rpcHow} ${rpcWhat}` })
 | 
					            rpcCallback({ _state: 'RPC_REQUEST_TIMEOUT', _stateMsg: `RpcSocket sendRequest timeout: ${rpcHow} ${rpcWhat}` })
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }, timeout)
 | 
					        }, timeout)
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
@ -100,7 +100,7 @@ const DAD = (module.exports = class RpcSocket extends ws {
 | 
				
			|||||||
          setTimeout(() => {
 | 
					          setTimeout(() => {
 | 
				
			||||||
            if (this.eventNames().indexOf(randomEvent) >= 0) {
 | 
					            if (this.eventNames().indexOf(randomEvent) >= 0) {
 | 
				
			||||||
              this.removeAllListeners(randomEvent)
 | 
					              this.removeAllListeners(randomEvent)
 | 
				
			||||||
              resolve({ _state: 'RPC_REQUEST_TIMEOUT', error: `RpcSocket sendRequest timeout: ${rpcHow} ${rpcWhat}` })
 | 
					              resolve({ _state: 'RPC_REQUEST_TIMEOUT', _stateMsg: `RpcSocket sendRequest timeout: ${rpcHow} ${rpcWhat}` })
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }, timeout)
 | 
					          }, timeout)
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user