powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Надо создать таймер
25 сообщений из 60, страница 1 из 3
Надо создать таймер
    #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
Надо создать таймер
    #39906844
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fallen2019,
ты хочешь чтобы твоя программа каждую секунду дергала себя за рест апи и апдейдтила сообщения?
...
Рейтинг: 0 / 0
Надо создать таймер
    #39906846
fallen2019
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apb12,

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

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

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

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

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

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

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

Можете помочь реализовать Timer. Я гитхаб закинул проект. Блин я запарился просто
...
Рейтинг: 0 / 0
Надо создать таймер
    #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
Надо создать таймер
    #39906863
apb12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fallen2019
apb12,

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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