Форум программистов, компьютерный форум, киберфорум
JavaScript: Node.js
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
1

Событие все данные получены net.Socket

03.08.2019, 14:54. Просмотров 650. Ответов 3


Как словить тот момент, когда всё 'chunk' получены.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
const net = require('net');
const socket = new net.Socket();
 
socket.connect({
    port: 80,
    host: 'www.google.com'
},()=>{
   socket.write('GET / HTTP/1.1\r\nHost: [url]www.google.com\r\n\r\n[/url]')
});
 
socket.on('data',(chunk)=>{
    /*как словить то что последний chunk получен*/
})
Заранее Спасибо за ответы!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2019, 14:54
Ответы с готовыми решениями:

Nodejs net socket server and android socket client
Добрый день Форумчане нужно помощь гуру! Решил с другом написать сервер на ноде с использование...

Error #: 306 : constructor Socket(java.net.SocketImpl) has protected access in class java.net.Socket at line 282, column 32
привет , как сделать чтобы это компилилось а не выдавало ошибок sock = new Socket(cServerIp,...

Данные не получены, сервер не отвечает
Простите если не в той теме, я написал этот вопрос в личку Товарищу модератору UI, но ответа не...

Не работает интернет(данные сервера не получены)
При загрузке страницы, пишет: "Данные не получены. Не возможно загрузить страницу, так как не...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы Fullstack-разработчиков на JavaScript‌
3
279 / 200 / 79
Регистрация: 28.08.2013
Сообщений: 461
03.08.2019, 15:43 2
Если вы передаёте/принимает данные через сокет, то тогда вы должны самостоятельно обозначить завершение пакета/данных. Но по-умолчанию это нуль-заверщенная строка (char массив) "\0"
Но если вы используете HTTP(S), то можно использовать уже сделанное. Вот пример:
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
var https = require('https');
 
var options = {
    hostname: 'www.google.com',
    port: 443,
    path: '/',
    method: 'GET'
}
 
var req = https.request(options, function(res){
    console.log("statusCode: "+res.statusCode);
    var data = "";
    res.on('data', function(d){
        data += d;
    });
    res.on('end', function(){
        console.log("THE END.");
    });
});
 
req.on('error', function(err){
    console.error(err)
})
 
req.end();
1
6 / 6 / 0
Регистрация: 26.06.2016
Сообщений: 68
03.08.2019, 17:54  [ТС] 3
Нашел решение, через использования события 'readable', которое, как я понимаю наследуется от Class: stream.Readable.
Так как в нём data = null, после того как все данные прочитаны/получены;
По итогу код такой:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const net = require('net');
let socket = new net.Socket();
 
socket.connect({
    port: 80,
    host: 'www.google.com'
},()=>{
   socket.write('GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n')
})
 
socket.on('readable',()=>{
    let data = socket.read();
    if(data == null){console.log('the end of data')}
})
0
279 / 200 / 79
Регистрация: 28.08.2013
Сообщений: 461
03.08.2019, 18:30 4
Да, но два но.
1. Событие "readable" работает только в новых версиях (>= 11.x). А на хостинге не факт что будет новая версия.
2. Событие "readable" срабатывает когда есть данные для чтения, но не факт что все данные.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2019, 18:30

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

СОбытие срабатывающее когда загружаются все данные через php
Мне надо отследить когда у меня в блоке загрузятся данные, полученные из базы с помощью php,...

Как построить график в Excel программно, если данные получены из MSFlexGrid VB6
Всем привет! Я сделал програмку в VB6 для расчёта трансцендентного уравнения. Результаты выводятся...

Какие данные могут быть получены после обработки следующей формы и что приведёт к неработоспособности
Здравствуйте уважаемые пользователи форума. Не могли бы вы помочь ответить на эти два вопроса? 1....

Mail.ru присылает все сообщения, которые были уже получены на другом ПК
проблема с майл.ру агентом. я на работе переписываюсь по агенту, прихожу домой, включаю агент, и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.