def send(self, data, context=None): """ 发送数据 :param data: 数据(Java层LogicMessage) :param context: 回调上下文 """ log('send data', data) data_pack = msgpack.packb(data) print_bytes('data_pack', data_pack) # AES初始化后,则使用AES加密 if self._aes_util: data_pack = self._aes_util.encrypt(data_pack) print_bytes('aes_data_pack', data_pack) else: data_pack = self._rsa_util.encrypt(data_pack) print_bytes('rsa_data_pack', data_pack) message = b2a_base64(data_pack) print_bytes('send message', message) self._socket.sendall(message) # 如果有回调上下文,并且设置了回调函数名,则等待回调 if context and data.get('c'): receive_data = self.receive() method_name = receive_data.get('i') param_pack = receive_data.get('p') if param_pack: param = msgpack.unpackb(param_pack) else: param = {} log('param', param) getattr(context, method_name)(param)
def to_ls_login(self, param): log('to_ls_login:'******'i': 'login', 'p': msgpack.packb(param), 'c': 'from_ls_login' } self._socket_service.send(data, self)
def to_ls_shake_hand(self, param): log('to_ls_shake_hand:', param) data = { 'i': 'shakeHand', 'p': msgpack.packb(param), 'c': 'from_ls_shake_hand' } self._socket_service.send(data, self)
def receive(self): """ 接收数据 :return: 数据 """ message = self._socket.recv(self._buff_size) print_bytes('receive message', message) data_pack = a2b_base64(message) # AES初始化后,则使用AES解密 if self._aes_util: print_bytes('aes_data_pack', data_pack) data_pack = self._aes_util.decrypt(data_pack) else: print_bytes('rsa_data_pack', data_pack) data_pack = self._rsa_util.decrypt(data_pack) print_bytes('data_pack', data_pack) data = msgpack.unpackb(data_pack) log('receive data', data) return data
def from_ls_login(self, param): log('from_ls_login:', param)
def from_ls_shake_hand(self, param): log('from_ls_shake_hand:', param) self._socket_service.set_aes_key(param.get('aes_key'))