def run(self): """ Запускает выполнение потока. Принимает новые соединения. @return: - """ while True: try: # client_addr_info - это кортеж (<address>; <socket number>) (client_socket, client_addr_info) = self._socket.accept() except OSError: pass else: login = get_new_login() connection_time = datetime.datetime.now().timestamp() # Добавление клиента в список клиентов с которыми наш сервер работает self._client_manager.add_client(client_socket, client_addr_info[0], connection_time, login) # Добавление информации о событии во вкладку Log self._main_window.add_data_in_tab( 'Log', '[{}] Connection request from: {} (socket: {}).'.format( get_formatted_date(connection_time), client_addr_info[0], client_addr_info[1])) time.sleep(self._wait_time)
def _handle_leave_chat_msg(self, msg_dict): """ Handles message from the server that another client has left a chatroom. @param msg_dict: JSON-object. (message). @return: - """ time_str = '[{}] @Server>'.format(get_formatted_date(msg_dict['time'])) msg_string = '{} left {} chatroom.'.format(msg_dict['login'], msg_dict['room']) self.add_message_signal.emit(msg_dict['room'], time_str, msg_string)
def _handle_chat_msg(self, msg_dict): """ Handles message to the chat from a client. @param msg_dict: JSON-object. (message). @return: - """ time_str = '[{}] @{}>'.format(get_formatted_date(msg_dict['time']), msg_dict['from']) self.add_message_signal.emit(msg_dict['to'], time_str, msg_dict['message'])
def _send_msg(self): """ Sends message to the server when "Send" button is being pressed. @return: - """ msg_text = self._msg_te.toPlainText() if self._font.bold(): msg_text = '<b>{}<b>'.format(msg_text) if self._font.italic(): msg_text = '<i>{}<i>'.format(msg_text) if self._font.underline(): msg_text = '<u>{}<u>'.format(msg_text) login = self.parent.parent.get_login() current_time = datetime.datetime.now().timestamp() if self.tab_name.startswith('#'): msg = JIMMessage( JIMMsgType.CTS_CHAT_MSG, **{ 'action': 'msg', 'time': current_time, 'to': self.tab_name, 'from': login, 'message': msg_text }) else: msg = JIMMessage( JIMMsgType.CTS_PERSONAL_MSG, **{ 'action': 'msg', 'time': current_time, 'to': self.tab_name, 'from': login, 'encoding': 'utf-8', 'message': msg_text }) self.parent.parent.msg_handler.write_output_bytes(msg.serialize()) time = '[{}] @{}> '.format(get_formatted_date(current_time), login) self._message_queue.put((time, msg_text))