Ок,всем спасибо,буду пробовать
Помогите с вебсокет
-
@fOrest94 said in Помогите с вебсокет:
console.log(
Roundtrip time: ${Date.now() - data} ms);Странная строка, из даты вычитается сообщение? )
-
@fOrest94 said in Помогите с вебсокет:
@Fox Вот так это выглядит.
Но сообщения в лог не идет о коннекте. Не знаю в чем причина.
Глянул сейчас сайт, в фаербаге ссылка на рукопожатие выглядит вот так:
wss://playdrop.org/socket/?EIO=3&transport=websocket&sid=I2OFE0_m89wb2pGHBOeHи параметр sid берётся из куков

Если указать этот параметр, то рукопожатие происходит корректно:

-
@Fox said in Помогите с вебсокет:
и параметр sid берётся из куков
У меня вообще исходный код автора работает без проблем
const WebSocket = require('ws'); await (new Promise((resolve, reject) => { const ws = new WebSocket('wss://playdrop.org/socket/?EIO=3&transport=websocket', { origin: 'https://playdrop.org' }); ws.on('open', function open() { console.log('connected'); ws.send(Date.now()); }); ws.on('close', function close() { console.log('disconnected'); resolve() }); ws.on('message', function incoming(data) { console.log(data); setTimeout(function timeout() { ws.send(Date.now()); }, 500); }); }));
-
@UserTrue said in Помогите с вебсокет:
@Fox said in Помогите с вебсокет:
и параметр sid берётся из куков
У меня вообще исходный код автора работает без проблем
const WebSocket = require('ws'); await (new Promise((resolve, reject) => { const ws = new WebSocket('wss://playdrop.org/socket/?EIO=3&transport=websocket', { origin: 'https://playdrop.org' }); ws.on('open', function open() { console.log('connected'); ws.send(Date.now()); }); ws.on('close', function close() { console.log('disconnected'); resolve() }); ws.on('message', function incoming(data) { console.log(data); setTimeout(function timeout() { ws.send(Date.now()); }, 500); }); }));Хмм, этот код у меня тоже отработал без проблем. Я его и не проверял, раз автор сказал, что не работает
:D -
@Fox said in Помогите с вебсокет:
Хмм, этот код у меня тоже отработал без проблем. Я его и не проверял, раз автор сказал, что не работает :D
У автора скрин обрезан, возможно его код подключается в дочернем модуле. А как "Мы" знаем, если модуль является 3-им и более потомком, то лог БАСа надо пробрасываться самому ))
-
@fOrest94 said in Помогите с вебсокет:
@UserTrue Спасибо большое, что подправили мой код.
Но сейчас возникает вопрос, как сделать бесперебойное получение данных, чтобы не было таймаута.Сохраняйте данные в глобальной переменной, например в массиве и получайте из него данные когда необходимо
-
@fOrest94 said in Помогите с вебсокет:
@Fox С сохранением понятно. Но как реализировать продолжение работы после таймаута?
а для чего вам вообще таймаут? ))) переместите resolve после конекта и всё. Действие закроется сразу после конекта, а данные вы будете получать в других действиях node обращаясь к глобальной переменной ноды
-
@fOrest94 said in Помогите с вебсокет:
@UserTrue А может скрипт бесперебойно работать без ошибкы "Таймаут во время выполнения функции на встроенном языке"?
Может, вам же об этом и говорят
-
@fOrest94 said in Помогите с вебсокет:
Возник сейчас вопрос по этой теме: Как сделать, что не было disconnected и данные с вебсокета можна було получать бесконечно?
Повесить на данное событие обработчик и конектиться заново.
-
@fOrest94 said in Помогите с вебсокет:
@UserTrue Как именно это реализировать в ноде?
На событие close вешаете обработчик и в нем заново конектитесь.
resolve()