С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
1

Запуск бесконечного цикла при работе с вебсокетами

15.07.2018, 00:08. Показов 1010. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приложение работает с вебсокетами.
Приходит сообщение, после которого на сервере надо запустить бесконечный цикл.
Написал этот цикл в новом потоке.
Все работает, можно работать с другими сервисами, или принимать ajax'ы. Но цикл блокирует @OnMessage вебсокетов, из которого запускался новый поток.
Подскажите как запустить этот цикл так, чтобы можно было продолжить работу с вебсокетами параллельно с выполнением цикла.

Java
1
2
3
4
5
6
@OnMessage
    public void onMessage(Session session, Message message) throws IOException, InterruptedException, EncodeException {
        if (Objects.equals(message.getSubject(), "start-game")) {
            GameInfinityLoop gameInfinityLoop = new GameInfinityLoop();
            gameInfinityLoop.run();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class GameInfinityLoop implements Runnable {
 
    private WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
    private GameService gameService = context.getBean(GameService.class);
 
    @Override
    public void run() {
        try {
            gameService.game();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (EncodeException e) {
            e.printStackTrace();
        }
    }
}
Добавлено через 1 час 39 минут
Проблема решена.
Решение:
Java
1
2
3
4
@OnMessage
    public void onMessage(Session session, Message message) throws IOException, InterruptedException, EncodeException {
        if (Objects.equals(message.getSubject(), "start-game")) {
            new GameInfinityLoop().start();
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class GameInfinityLoop extends Thread {
 
    private WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
    private GameService gameService = context.getBean(GameService.class);
 
    @Override
    public void run() {
        try {
            gameService.game();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (EncodeException e) {
            e.printStackTrace();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2018, 00:08
Ответы с готовыми решениями:

Найти сумму ряда при использовании бесконечного цикла
Будьте добры помогите пожалуйста! Цикл c использованием конструкции Do While – Loop, или Do –...

Вывод содержимого vector при наличии бесконечного цикла
День добрый! Возникла проблема с выводом содержимого vector-а. Вот код: #include <iostream>...

Выход из бесконечного цикла в GraphABC при нажатии клавиши (любой)
Здравствуйте! У меня такая проблема: Дан цикл: uses GraphABC repeat ...... until...

GameLogo Ошибка при попытке прерывания бесконечного цикла по клавише
пытаюсь прервать бесконечный цикл по клавише Esc код...

1
Эксперт Java
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.07.2018, 00:52 2
Цитата Сообщение от florgas Посмотреть сообщение
Но цикл блокирует @OnMessage вебсокетов, из которого запускался новый поток.
новый поток не запускается методом run()
0
15.07.2018, 00:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2018, 00:52
Помогаю со студенческими работами здесь

Сложное условие завершения цикла при работе с матрицами
Помогите пожалуйста написать программу на паскале Дана матрица А с 2 столбцами и 10...

Сложное условие завершения цикла при работе с матрицами.
Методика выполнения работы. Составить программу, предусматривая завершение обработки матрицы при...

Ошибка обращения к памяти при работе цикла (access violation)
Есть нехитрая процедура, которая рассчитываем коэффициенты. procedure TForm1.N6Click(Sender:...

Отладка бесконечного цикла
Здравствуйте. Проблема такая, написал цикл программы взаимодействия пользователя с меню Цикл...

Выход из бесконечного цикла
я начинаю изучать PHP, задача такая: есть бесконечный цикл отправки POST запроса как сделать чтоб ...

Прерывание бесконечного цикла
У меня есть код с бесконечным циклом. В этом коде долго происходят действия. Я хочу сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru