powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно послать данные клиенту от WebSocket сервера ICS
2 сообщений из 2, страница 1 из 1
Как правильно послать данные клиенту от WebSocket сервера ICS
    #40109823
Andi_WEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Некоторое время назад у меня было общение в топике по JS, и меня корили, что я неправильно передаю данные от сервера клиенту. Как я не объяснял, что сервер - монолитное exe-приложение которое я не могу переделать, некий Вадя (около 20К постов), все напирал на WebSocket. Решил посмотреть, что это такое. На всякий случай.

Из реально доступного нашел только компоненты ICS. Работаю с незащищенным соединением, что бы не использовать сторонние библиотеки. От браузера данные поступают без проблем, в браузер от сервера тоже, но только в виде эха, в контексте обработчика.

Любая попытка отправить данные в произвольный момент времени с помощью WSocketServer1.Client[0].SendStr('Test') - НЕ РАБОТАЕТ. В консоли браузера ошибка - неправильные значения в байтах заголовка (фреймах ?). Погуглил - проблема частая (не только в ICS, но и вообще в других языках), что только не помогало, от замены браузера до отключения антивируса. Протокол судя по всему строгий и достаточно костыльный.

В моем случае, после медитации сработала такая конструкция:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure TForm3.Button1Click(Sender: TObject);
var
  E: TWebSocketFrameEnumerator;
  M: TWebSocketMessageHybie;
  F: TWebSocketFrame;
  I: Integer;

Begin

    M := TWebSocketMessageHybie.Create('May 18, 2020 V8.64 Added support for International Domain Names '+ DateTimeToStr(Now));
    E := M.getFrames;
    For I := 0 to E.Count - 1 do
       Begin
         F:=E.Frame[I];
         WSocketServer1.Client[0].SendStr(F.Encode);
       End;

    M.Free;

end;



Помогите, пожалуйста, новичку. Вопросы:

1. Почему не работает WSocketServer1.Client[0].SendStr('Test') - этот метод для красоты, что ли?
2. Надо ли освобождать еще какие-либо ресурсы после отправки.
3. Какова вероятность, что это перестанет работать. Например, в следующей версии Edge. Понимаю, что этот вопрос так себе, но все же...
...
Рейтинг: 0 / 0
Как правильно послать данные клиенту от WebSocket сервера ICS
    #40109826
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andi_WEB
1. Почему не работает WSocketServer1.Client[0].SendStr('Test')
Нужно смотреть передаваемые заголовки и сырые данные в TCP пакете
Andi_WEB
3. Какова вероятность, что это перестанет работать. Например, в следующей версии Edge.
Протокол WebSocket стандартизирован. Достаточно обоим сторонам следовать ему. Я когда-то писал на Delphi свою реализацию на чистом WinSock. Все замечательно работало
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно послать данные клиенту от WebSocket сервера ICS
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]