Задать вопрос
@Re7r0

Как отдельным потоком постоянно отправлять сообщения в WebSocket клиенту?

Есть код:
const WebSocket = require('ws')
 
const wsServer = new WebSocket.Server({port: 9000})
wsServer.on('connection', onConnect)

function some_function(){
    while(true){
        //some code
    }
}

function onConnect(wsClient) {
    console.log('Новый пользователь');

    wsClient.on('message', function(message) {

        wsClient.send('Данные получены...')

        some_function(); //как запустить эту функцию, чтобы она выполнялась параллельно

    })
    wsClient.on('close', function() {

        console.log('Пользователь отключился');
    })
 }


Как запустить функцию, отмеченную в коде через комментарии, параллельно
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
AlexMcArrow
@AlexMcArrow
Люблю РНР, да я такой!
Вот такой вариант:
const WebSocket = require('ws')

const wsServer = new WebSocket.Server({ port: 9000 })
wsServer.on('connection', (wsClient) => {
    wsClient.on('error', console.error);
    console.log('Новый пользователь');
    wsClient.on('message', function (message) {
        console.log('Сообщение от пользователя:', message);
        wsClient.send('Данные получены...')
        wsClient._timer = setInterval(() => some_function(wsClient), 1000);

    })
    wsClient.on('close', function () {
        clearInterval(wsClient._timer);
        console.log('Пользователь отключился');
    })
})

function some_function(wsClient) {
    wsClient.send('Сообщение каждый вызов')
}

При каждом полученном сообщение - создается таймер который с заложенным интервалом (1000мс = 1 сек) выполняет функцию
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
Для параллельных тяжелых вычислений нужно использовать воркеры или к примеру модуль child_process
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы