예제 #1
0
    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)
예제 #2
0
 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)
예제 #3
0
 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'])
예제 #4
0
    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))