Обсуждение статьи "WebSocket для MetaTrader 5" - страница 2

 
Renat Fatkhullin:
То есть, вы вообще понятия не имеете о сокетах и их буферах, но учите нас ошибкам.

Проверка размера сырых данных во входящем буфере SocketIsReadible конечно не подходит к Tls функциям, которые работают с шифрованными данными, получаемыми в меньшем размере.

Вопрос был относительно функции SocketIsReadible, и то что функция имеет внутренний буфер, это понятно.
Вы же пишите за буфер функции SocketIsReadible, но это как то странно о нём упоминать, если пользователю он не доступен.

 
Статью прочитайте и посмотрите предложенный код.

Странно заявлять об ошибках, имея невоспроизводимый кусок кода из нескольких строк, когда речь идет о качестве реализации сложного протокола.

 
Roman:

Вопрос был относительно функции SocketIsReadible, и то что функция имеет внутренний буфер, это понятно.
Вы же пишите за буфер функции SocketIsReadible, но это как то странно о нём упоминать, если пользователю он не доступен.

Еще раз повторю - вы не понимаете сокетов и не знаете их особенностей.

Даже ошибаетесь с 'внутренними' буферами SocketIsReadable, которых нет. Чьи буфера в сокетах? Кто ими управляет? Как они работают и какие у них особенности?

Отсюда и неправильное использование с заявлением об ошибках, когда реальность расходится с наивным восприятием.



 
Renat Fatkhullin:

'Принял за ошибку' - люди умудряются любой аккуратный ответ принять за признание вины. Покажите четкий ответ.

.
il

r

il1

 
Roman:

.


Первая часть его ответа верная, обьясняет разницу между размерами сырых данных и расшифрованных.

А вот последний ответ - частный случай(поставить фикс размер) в виде костыля. Скорее всего на фоне очередного трехстрочного куска кода, где ничего кроме частной поправки/костыля предложить нельзя.

Ильяс не занимается сокетами. Никакого признания ошибки нет.

Для информации: в МТ5 реализацию сырых сокетов, tls, https и их производных писал я. Как до этого писал десятки реализаций сетевых протоколов начиная с 1995 года.

Поэтому странно спорить со мной. Десятки миллионов устройств работали и работают на моих реализациях.
 
Renat Fatkhullin:
Первая часть его ответа верная, обьясняет разницу между размерами сырых данных и расшифрованных.

А вот последний ответ - частный случай(поставить фикс размер) в виде костыля. Скорее всего на фоне очередного трехстрочного куска кода, где ничего кроме частной поправки/костыля предложить нельзя.

Ильяс не занимается сокетами. Никакого признания ошибки нет.

Для информации: в МТ5 реализацию сырых сокетов, tls, https и их производных писал я. Как до этого писал десятки реализаций сетевых протоколов начиная с 1995 года.

Поэтому странно спорить со мной. Десятки миллионов устройств работали и работают на моих реализациях.

Я понимаю ваш не оспоримый опыт. И спорить с вами не кто не собирался.
Но статья не раскрывает вопрос, как правильно использовать wss: в MQL!
Потому что автор статьи, так же не понимает этого момента, как и все остальные (даже продвинутые) пользователи. 
По этому и использую в своей реализации, фикс размер в виде костыля.

Покажите пожалуйста правильную вычитку wss: фрейма на MQL с учётом пула SocketIsReadable, все скажут только спасибо.

 
Roman:

Я понимаю ваш не оспоримый опыт. И спорить с вами не кто не собирался.
Но статья не раскрывает вопрос, как правильно использовать wss: в MQL!
Потому что автор статьи, так же не понимает этого момента, как и все остальные (даже продвинутые) пользователи. 
По этому и использую в своей реализации, фикс размер в виде костыля.

Покажите пожалуйста правильную вычитку wss: фрейма на MQL с учётом пула SocketIsReadable, все скажут только спасибо.

Сейчас нет времени, но надо бы мне сделать набор CSocketRaw, CSocketTLS, CSocketHTTP реализаций в стандартной библиотеке MQL5.

Будет часов 8 свободного времени, сделаю.

 
Renat Fatkhullin:

Сейчас нет времени, но надо бы мне сделать набор CSocketRaw, CSocketTLS, CSocketHTTP реализаций в стандартной библиотеке MQL5.

Будет часов 8 свободного времени, сделаю.

Спасибо, ждём!

 
Renat Fatkhullin:

Сейчас нет времени, но надо бы мне сделать набор CSocketRaw, CSocketTLS, CSocketHTTP реализаций в стандартной библиотеке MQL5.

Будет часов 8 свободного времени, сделаю.

Желательно начать с чего-то простого, но реально рабочего, например, получить ответ от wss://echo.websocket.org.

 
Renat Fatkhullin:


Вопрос не относится к статье, но связан с сетевой функцией чтения.

Сделал замер выполнения функции SocketTlsReadAvailable()  

double avgDelay = 0.0;
double it = 0.0;

//-----------------------------------------------------------------------------
void Recv()
{
   ulong start = GetMicrosecondCount();
     
   int qtyByte = SocketTlsReadAvailable(socket, buf, len);     
         
   double delay = (GetMicrosecondCount()-start)/1000.0;
         

   avgDelay += delay;
   PrintFormat("Bytes received %d   Total time: %.3f ms   Avg time: %.3f ms", qtyByte, delay, avgDelay/++it);
      
}
2021.08.21 17:34:35.110 Test    Bytes received 142   Total time: 2.860 ms   Avg time: 11.824 ms
2021.08.21 17:34:35.111 Test    Bytes received 852   Total time: 1.131 ms   Avg time: 11.819 ms
2021.08.21 17:34:35.113 Test    Bytes received 710   Total time: 1.874 ms   Avg time: 11.815 ms
2021.08.21 17:34:35.114 Test    Bytes received 142   Total time: 0.668 ms   Avg time: 11.810 ms
2021.08.21 17:34:35.117 Test    Bytes received 142   Total time: 2.551 ms   Avg time: 11.805 ms
2021.08.21 17:34:35.132 Test    Bytes received 0     Total time: 15.564 ms  Avg time: 11.807 ms
2021.08.21 17:34:35.148 Test    Bytes received 0     Total time: 15.616 ms  Avg time: 11.809 ms
2021.08.21 17:34:35.149 Test    Bytes received 0     Total time: 1.383 ms   Avg time: 11.804 ms
2021.08.21 17:34:35.151 Test    Bytes received 710   Total time: 1.855 ms   Avg time: 11.799 ms
2021.08.21 17:34:35.164 Test    Bytes received 142   Total time: 12.117 ms  Avg time: 11.800 ms
2021.08.21 17:34:35.179 Test    Bytes received 0     Total time: 15.530 ms  Avg time: 11.801 ms
2021.08.21 17:34:35.195 Test    Bytes received 0     Total time: 15.542 ms  Avg time: 11.803 ms
2021.08.21 17:34:35.210 Test    Bytes received 0     Total time: 15.570 ms  Avg time: 11.805 ms
2021.08.21 17:34:35.218 Test    Bytes received 0     Total time: 7.363 ms   Avg time: 11.803 ms
2021.08.21 17:34:35.226 Test    Bytes received 142   Total time: 8.143 ms   Avg time: 11.801 ms
2021.08.21 17:34:35.242 Test    Bytes received 0     Total time: 15.549 ms  Avg time: 11.803 ms
2021.08.21 17:34:35.257 Test    Bytes received 0     Total time: 15.554 ms  Avg time: 11.804 ms
2021.08.21 17:34:35.273 Test    Bytes received 0     Total time: 15.351 ms  Avg time: 11.806 ms
***
***
***


Почему такое большое время выполнения функции?
Можно ли с вашей стороны, оптимизировать функции чтения?