|
|
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
Код: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. В var proxy = http.createClient(80, request.headers['host']); должны передаваться данные для соединения с прокси из БД, обращение к БД асинхронное, как лучше его организовать что-бы не поломать архитектуру и работоспособность? Грубо говоря, как можно завернуть, допустим в setTimeout, часть использующую crateClient, что-бы данный код работал? Как не пробовал - перестаёт работать и не возвращает результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 17:11 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
serper, а эти данные из БД, которые для proxy - они общие для всех пользователей? если да, то сначала получаешь их, потом создаешь сервер (http.createServer). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 17:34 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
Яростный Мечserper, а эти данные из БД, которые для proxy - они общие для всех пользователей? если да, то сначала получаешь их, потом создаешь сервер (http.createServer). Нет, для каждого соединения эти данные свои. Сейчас есть идея сделать обертку для всех действий httpClient в данном коде, которой будут обращаться также как сейчас к переменной proxy_request, а эта оббёртка будет уже в себе буфферизировать данные и выполнять вложенные асинхронные запросы отдавая данные из буфера. Интересно будет ли работать данная схема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 17:41 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
serperНет, для каждого соединения эти данные свои.откуда берутся данные для запроса к БД? они есть в request.headers? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 17:44 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
Яростный МечserperНет, для каждого соединения эти данные свои.откуда берутся данные для запроса к БД? они есть в request.headers? Да. Единственное, что необходимо для запроса к БД это request.headers['host']. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 18:10 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
serperЯростный Мечпропущено... откуда берутся данные для запроса к БД? они есть в request.headers? Да. Единственное, что необходимо для запроса к БД это request.headers['host'].тогда примерно такой набросок: Код: javascript 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. сначала отправляешь запрос в БД (getProxyDataFromDB), по факту выполнения он создает proxy_request. параллельно берутся данные из request. пока нет proxy_request, они накапливаются в буфере (buffer.add), иначе идут прямо в proxy_request, то же самое с end() - либо вызывается proxy_request.end();, либо ставится флаг, что входные данные получены. proxy_request при своем создании пишет в себя данные, которые успели накопиться (возможно, пустые), и если есть флаг об окончании приема входных данных, вызывает proxy_request.end(); вроде должно работать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 18:33 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
Яростный Мечserperпропущено... Да. Единственное, что необходимо для запроса к БД это request.headers['host'].тогда примерно такой набросок: Код: javascript 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. сначала отправляешь запрос в БД (getProxyDataFromDB), по факту выполнения он создает proxy_request. параллельно берутся данные из request. пока нет proxy_request, они накапливаются в буфере (buffer.add), иначе идут прямо в proxy_request, то же самое с end() - либо вызывается proxy_request.end();, либо ставится флаг, что входные данные получены. proxy_request при своем создании пишет в себя данные, которые успели накопиться (возможно, пустые), и если есть флаг об окончании приема входных данных, вызывает proxy_request.end(); вроде должно работать :) Спасибо, буду пробовать. О таком подходе и думал как-раз, только реализацию работы через объект-оббертку сделать, что-бы работа выглядела примерно так-же как с http.Client. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 18:38 |
|
||
|
nodejs http.Server вложенные асинхронные обращения
|
|||
|---|---|---|---|
|
#18+
http.createClient - deprecated, используйте http.request ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2014, 18:55 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38535873&tid=1447454]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
467ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 840ms |

| 0 / 0 |
