Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Надо создать таймер / 25 сообщений из 60, страница 1 из 3
23.12.2019, 08:24
    #39906830
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
Нужно создать Таймер с помощью
https://howtodoinjava.com/spring-core/spring-timer-tasks/

Чтобы допустим через 1 секунду запускалась какая та функция допустим "Unread", у меня допустим чат создан, я хочу этот таймер сделать для того чтобы он каждую секунду запускал эту функция для того чтобы непрочитанные сообщения брались из бд

Можете помочь создать таймер https://github.com/fallen3019/vaadin-chat
Rest Controller
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
@org.springframework.web.bind.annotation.RestController
public class RestController {
    @Resource
    private final MessageService messageService;

    public RestController(MessageService messageService) {
        this.messageService = messageService;
    }

    @PostMapping("/api/save")
    public Message saveMessage(@RequestBody Message chatMessage) {
        return messageService.add(chatMessage);
    }

    @GetMapping("/api/last")
    public String getLasts() {
        return new Gson().toJson(messageService.getLast());
    }

    @GetMapping("/api/unread")
    public List<Message> getUnreadMessages() {
        return messageService.getUnreadMessages();
    }

    @PutMapping("/api/update/{id}")
    public void updateMessage(@PathVariable long id, @RequestBody Message chatMessage) {
        messageService.updateMessage(id, chatMessage);
    }
}



MainView
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
@StyleSheet("frontend://styles/styles.css")
@Route
@PWA(name = "Vaadin MessagesInfoManager", shortName = "Vaadin MessagesInfoManager")
@Push
public class MainView extends VerticalLayout {
    private final MessagesInfoManager messagesInfoManager;
    private final RestService restService;
    private String username;

    @Autowired
    public MainView(RestService restService) {
        this.messagesInfoManager = MessageConfigurator.getInstance().getChatMessagesInfoManager();
        addClassName("main-view");
        setSizeFull();
        setDefaultHorizontalComponentAlignment(Alignment.CENTER);

        H1 header = new H1("Vaadin Chat");
        header.getElement().getThemeList().add("dark");

        add(header);

        askUsername();
        this.restService = restService;
    }

    private void askUsername() {
        HorizontalLayout layout = new HorizontalLayout();
        TextField usernameField = new TextField();
        Button startButton = new Button("Start chat");

        layout.add(usernameField, startButton);

        startButton.addClickListener(click -> {
            username = usernameField.getValue();
            remove(layout);
            showChat(username);
        });

        add(layout);
    }

    private void showChat(String username) {
        MessageList messageList = new MessageList();

        List<Message> lasts = restService.getLast();
        for (Message message : lasts) {
            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));
        }

        add(messageList, createInputLayout(username, messageList));
        expand(messageList);
    }

    private Component createInputLayout(String username, MessageList messageList) {
        HorizontalLayout layout = new HorizontalLayout();
        layout.setWidth("100%");

        TextField messageField = new TextField();
        messageField.addKeyDownListener(Key.ENTER, keyDownEvent -> sender(messageField, messageList));
        Button sendButton = new Button("Send");
        sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

        layout.add(messageField, sendButton);
        layout.expand(messageField);
        
        messageField.addFocusListener(event -> {
            for (Message message : messagesInfoManager.getMessagesByUI(getUI())) {
                if (!message.getFrom().equals(username)) {
                    message.setUnread(false);
                    this.restService.updateMessage(message.getId(), message);
                }
            }
        });

        sendButton.addClickListener(click -> sender(messageField, messageList));
        messageField.focus();

        return layout;
    }

    private void sender(TextField textField, MessageList messageList) {
        Message message = new Message(username, textField.getValue());
        message = restService.saveMessage(message);
        messagesInfoManager.updateMessageUIInfo(new MessageInfo(messageList, message, this));
        textField.clear();
        textField.focus();
    }
}
...
Рейтинг: 0 / 0
23.12.2019, 09:23
    #39906844
apb12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019,
ты хочешь чтобы твоя программа каждую секунду дергала себя за рест апи и апдейдтила сообщения?
...
Рейтинг: 0 / 0
23.12.2019, 09:28
    #39906846
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
apb12,

да суть в том чтобы пользователь который войдет в чат видел непрочитанные сообщения, вот и хочу чтобы он каждую секунду запускал какую то функцию допустим unread.

По идее мне сказали, чтобы я заменил "unread" и "update" одним новым "getUnreadLastMessages", но сначала я просто хочу разобраться с таймером, чтобы он хотя бы какую то функцию запускал каждую секунду, можете помочь разобраться, я туториалы посмотрел что то не получается
...
Рейтинг: 0 / 0
23.12.2019, 09:33
    #39906849
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019,

Не нужно. Переделай на вебсокеты.
...
Рейтинг: 0 / 0
23.12.2019, 09:37
    #39906852
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
crutchmaster,

Мне сказали без веб сокетов, только использовать Timer для Spring
...
Рейтинг: 0 / 0
23.12.2019, 09:38
    #39906853
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
crutchmaster
Не нужно. Переделай на вебсокеты.
+100500
...
Рейтинг: 0 / 0
23.12.2019, 09:39
    #39906854
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
вадя,

Плюс сообщения у меня не должны хранится в сервере, а в базе данных, вот у меня он хранит сообщения в бд
...
Рейтинг: 0 / 0
23.12.2019, 09:44
    #39906858
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019
Плюс сообщения у меня не должны хранится в сервере, а в базе данных, вот у меня он хранит сообщения в бд
база данных разве не на сервере?
...
Рейтинг: 0 / 0
23.12.2019, 09:46
    #39906859
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019
Timer для Spring

Ну что за изврат? Это делается на клиенте жаваскриптом. Как тебе сервак будет обновлять данные на клиенте. Я подозреваю, что этот модный ява-шаблонизатор генерит скрипт для фронта. Как он хоть называется?
...
Рейтинг: 0 / 0
23.12.2019, 09:52
    #39906860
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
вадя,

Раньше у меня сообщения хранились на сервере, но мне сказали чтобы я его хранил в базе данных MySQL. Так вот теперь мой чат хранит сообщения в базе данных, и он должен брать сообщения из базы данных
...
Рейтинг: 0 / 0
23.12.2019, 09:53
    #39906861
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
вадя,

Можете помочь реализовать Timer. Я гитхаб закинул проект. Блин я запарился просто
...
Рейтинг: 0 / 0
23.12.2019, 09:53
    #39906862
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019,

https://vaadin.com/api/framework/7.6.8/com/google/gwt/user/client/Timer.html
Тебе вот это походу надо. Vaadin - это твой server-side framework. Он делает из ява классов html/css/js морду. Гугли по нему, а не по спринг всё, что связанно с фронтом.
...
Рейтинг: 0 / 0
23.12.2019, 09:54
    #39906863
apb12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019
apb12,

да суть в том чтобы пользователь который войдет в чат видел непрочитанные сообщения, вот и хочу чтобы он каждую секунду запускал какую то функцию допустим unread.

По идее мне сказали, чтобы я заменил "unread" и "update" одним новым "getUnreadLastMessages", но сначала я просто хочу разобраться с таймером, чтобы он хотя бы какую то функцию запускал каждую секунду, можете помочь разобраться, я туториалы посмотрел что то не получается

понимаешь в чем дело
тут две разные вещи
кнопка обновить сообщение находится на стороне клиента-он жмет у себя в браузее- браузер отправляет запрос на твой сервер -получает данные и обновляет страницу

ты же хочешь чтобы сам сервер дергал сам себя за рест апи и обновлял информацию-так не получится в том плане ,что пока сам клиент не обновить страницу,поэтому то что ты хочешь реализуется ajax запросом к твоему рест контроллеру
но у тебя ваадин я понятия не имею как туда асинхронные запросы добавлять

тоесть по сути тебе нужно только тобавить небольшой js скрпит который будет каждую секунду делать асинхронный запрос и обновлять данные без апдейта целой страницы.
...
Рейтинг: 0 / 0
23.12.2019, 09:56
    #39906866
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
apb12
ты же хочешь чтобы сам сервер дергал сам себя

Нет, не хочет. Ему надо в vaadin приделать server-side херню, которая сгенерит javascript таймер.
И вообще, иди работу ищи.
...
Рейтинг: 0 / 0
23.12.2019, 09:57
    #39906867
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019
Раньше у меня сообщения хранились на сервере, но мне сказали чтобы я его хранил в базе данных MySQL.
что в твоём понимании сервер и что такое база данных?
...
Рейтинг: 0 / 0
23.12.2019, 10:56
    #39906900
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
вадя,

Да вот я нашел ваадиноский но мне сказали это не то, скаазли использоваьт сприговский таймер
...
Рейтинг: 0 / 0
23.12.2019, 10:57
    #39906901
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019,

Так пусть объяснят, что ни надо?
...
Рейтинг: 0 / 0
23.12.2019, 11:03
    #39906909
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
crutchmaster,
В общем у меня по идее был реализована функция которая выводит непрочитанные сообщения из базы данных новому пользователю который вошёл в чат. Но мне сказали что это неправильно, надо по другому.
Нужно создать функцию “getLastUnreadMessages” который будет доставать непрочитанные сообщения из бд и показывать тому кто вошёл в чат
Типа чтобы каждый юзер запоминал айди последнего непрочитанного сообщения в бд это типа сказали подсказка как показать непрочитанные сообщения новому пользователю.
Но главное создать класс Timer, который будет по определенному времени запускать какую то функцию допустим каждую 1 секунду
Там есть другие api их не трогать, они работают -
Save: который сохраняет сообщения в бд
И last - который выводит последние 10 сообщений

unread, update - вот за место него надо "getLastUnreadMessage"
...
Рейтинг: 0 / 0
23.12.2019, 11:17
    #39906916
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019
вадя,
Да вот я нашел ваадиноский но мне сказали это не то, скаазли использоваьт сприговский таймер

Таймер спринг находится на сервере. Представь как на сервере SQL.ru.
Как ты дома от него на экране получишь новый пост из форума?
...
Рейтинг: 0 / 0
23.12.2019, 11:20
    #39906917
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019,

Скидывай всю переписку короче, нихрена не понятно.
...
Рейтинг: 0 / 0
23.12.2019, 11:23
    #39906922
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
crutchmaster,

можете написать мне в телеграм


@wowwow23
...
Рейтинг: 0 / 0
23.12.2019, 11:29
    #39906926
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
fallen2019,

Нету у меня телеги.
...
Рейтинг: 0 / 0
23.12.2019, 11:32
    #39906929
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
crutchmaster,

как можно с вами связаться
...
Рейтинг: 0 / 0
23.12.2019, 12:50
    #39906956
apb12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
PetroNotC Sharp
fallen2019
вадя,
Да вот я нашел ваадиноский но мне сказали это не то, скаазли использоваьт сприговский таймер

Таймер спринг находится на сервере. Представь как на сервере SQL.ru.
Как ты дома от него на экране получишь новый пост из форума?

я ему это уже тысячу раз сказал,пусть делает простой js script из 5 строчек и будет ему счастье
...
Рейтинг: 0 / 0
23.12.2019, 12:59
    #39906963
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо создать таймер
apb12,

Просто сказали без JS
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Надо создать таймер / 25 сообщений из 60, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]