Example #1
0
    def run(self):
        """
        工作线程,接口并处理消息
        """
        # 连接服务器
        if not self.is_connected():
            if not self.connect():
                print "[error]connect to server<", self.host, ':', self.port, '> failed.'
                return

        # 数据处理
        while True:
            # 接收数据
            try:
                message = Message()

                header = self._read(message.get_message_header_length())
                message.parse_message_header(header)

                body_len = message.get_message_body_length()
                if body_len > 0:
                    body = self._read(body_len)
                    message.parse_message_body(body)
                else:
                    message.parse_message_body()
            except Exception as e:
                print '[error]client read data failed.', e
                continue

            # 处理消息
            try:
                message_body = message.get_message_body()
                if message_body is None:
                    print '[error]message('+message.get_message_id()+") body is None!!!"
                    continue

                self.handler.handle_message(message_body)
            except Exception, e:
                print '[error]handle message failed.', e
                break