Size: a a a

Node.js — русскоговорящее сообщество

2019 December 04

SS

Sergey Slipchenko in Node.js — русскоговорящее сообщество
Алексей Попов
Если мысль в том, что ты сказанул "очереди" не подумав, то ок, тогда вопрос снимается
я сказал, возможно опустив некоторые детали, как в вопросе, так и в ответе. В общем, да
источник

K

Kurakste in Node.js — русскоговорящее сообщество
Всем привет. Помогите разобраться. Есть приложение Koa + SocketIo.
В точке входа сначала подключается модуль работы с сокетами. Потом ниже по тексту идет настройка Koa и запускается сервер  Koa(REST). В модуле для работы с сокетами создается массив пустой и объект для работы с сокетами. Эти два объекта я экспортирую и жду что при старте уже будет создан массив (пустой). Потом при подключении я в этот массив пушу объект в котором будет в т.ч. ссылка на открытый сокет для пользователя.  Дальше я импортирую этот массив в контроллере restfull что бы отправить сообщение на сокет. И в этот момент массив оказывается не определенным(undefined). Нифика не пойму как так может быть?
источник

AK

Alex Komp in Node.js — русскоговорящее сообщество
Kurakste
Всем привет. Помогите разобраться. Есть приложение Koa + SocketIo.
В точке входа сначала подключается модуль работы с сокетами. Потом ниже по тексту идет настройка Koa и запускается сервер  Koa(REST). В модуле для работы с сокетами создается массив пустой и объект для работы с сокетами. Эти два объекта я экспортирую и жду что при старте уже будет создан массив (пустой). Потом при подключении я в этот массив пушу объект в котором будет в т.ч. ссылка на открытый сокет для пользователя.  Дальше я импортирую этот массив в контроллере restfull что бы отправить сообщение на сокет. И в этот момент массив оказывается не определенным(undefined). Нифика не пойму как так может быть?
где-то значит потерял по пути свой массив, точно уверен что он доходит?
засунь массив сокетов в коашный котекст
источник

K

Kurakste in Node.js — русскоговорящее сообщество
скорее не правильно примаю по какой логике подключаюся модули....  хотя какая разница? даже если бы котроллер первый раз вызвал модулб все равно он должен был иницеилизировать массив. Путьс он был бы пустым, но почему андефайнет???
источник

AK

Alex Komp in Node.js — русскоговорящее сообщество
тут очередность по идее не должна играть роли, у тебя какой-то такой должен быть код
const sockets = []
...
io.on('connection', socket => sockets.push(socket))
...
// koa:
app.context.sockets = sockets;

app.use(async ctx => {
 console.log(ctx.sockets);
});
источник

AK

Alex Komp in Node.js — русскоговорящее сообщество
ну это псевдокод, конечно с коа роутером и обработкой дисконектов будет немного по-другому
источник

K

Kurakste in Node.js — русскоговорящее сообщество
вроде тотже фик только с другого бока. Причем при старте приложения сонсоль лог все видит. А вот при запуске асинхронной функции массив прпадает. А рядом  так же импортированный объект есть и доступен(
источник

K

Kurakste in Node.js — русскоговорящее сообщество
const paymentService = require('../services/payment.service');
const { connectedAppUsers } = require('../socketApi');

console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', connectedAppUsers); // выводит правильно

…..

postPaymentNotification: async (ctx) => {
   …
   console.log('-------------------', connectedAppUsers); // здесь андефайнет

   await paymentService.setPaymentStatus(Success, OrderId); // а здесь все ок
   …
 },
источник

K

Kurakste in Node.js — русскоговорящее сообщество
нифика не пойму как так?
источник
2019 December 05

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
а если попробовать "по старинке"...

const connectedAppUsers = require('../socketApi').connectedAppUsers;
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
просто проверить в качестве бреда... а еще взять и копипастом "перебить" имя сонстанты в функции, где андефайнед
источник

VZ

Vadym Zvarych in Node.js — русскоговорящее сообщество
https://vk.com/wall-48413872_27749
Хотя сама книга малость странная...
источник

K

Kurakste in Node.js — русскоговорящее сообщество
Artem Zuev
просто проверить в качестве бреда... а еще взять и копипастом "перебить" имя сонстанты в функции, где андефайнед
а сейчас заработало... похоже потому что к сокету подрубился пользователь.... фик знает, надо дальше копать....
источник

AT

Alexey Tozik in Node.js — русскоговорящее сообщество
Доброго времени суток. Подскажите, как можно исправить?
источник

MM

Mike Mulukin in Node.js — русскоговорящее сообщество
Монгу запустить либо порт открыть
источник

AT

Alexey Tozik in Node.js — русскоговорящее сообщество
Возможно дело в этом?
источник

MM

Mike Mulukin in Node.js — русскоговорящее сообщество
Alexey Tozik
Возможно дело в этом?
возможно, зачем эвейт и что за урл
источник

AT

Alexey Tozik in Node.js — русскоговорящее сообщество
Mike Mulukin
возможно, зачем эвейт и что за урл
функция асинхронная, монгус с промисами работает. Просто я там не всю инф-ю об этой функции скинул, урл записан в переменную
источник

AT

Alexey Tozik in Node.js — русскоговорящее сообщество
Проблема решилась)
источник

K

Kurakste in Node.js — русскоговорящее сообщество
Все добра.
Помогите проблему решить. Вот участок кода:
    
require('./socketApi');
const app = new Koa();


из первого модуля я экспортирую переменные которые нужны в некоторых контроллерах(подключаю к коа ниже по тексту). Но если поставить консоль логи в нечале первого модуля и в контроллеры - получается что контроллеры загружаются первыми, а потом загружается модуль; Нужная переменная undefined.
Почему так и как следать что бы сначала интециализировался модуль и потом шло испольнение дальше?
источник