Установление соединения Socket.io (с библиотекой DelphiWebsockets) - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь подключиться к сервису Crisp.Мне нужно подписаться на RTM Events по соединению Socket.IO (https://docs.crisp.chat/api/v1/#header-?-rtm-events)

Мой исходный код выглядит так:

class procedure TCrisp.InitWebSocket;
var
  TmpStrings: TStrings;
begin
  FWebSocket := TIdHTTPWebsocketClient.Create();
  FWebSocket.Host := WS_HOST; 
  FWebSocket.Port := WS_PORT;
  FWebSocket.SocketIOCompatible := True;
  FWebSocket.SocketIO.OnEvent('message:received',
    procedure(const ASocket: ISocketIOContext; const aArgument: TSuperArray; const aCallback: ISocketIOCallback)
    begin
      ShowMessage('Data PUSHED from server: ' + aArgument[0].AsJSon);
      //server wants a response?
      if aCallback <> nil then
        aCallback.SendResponse('thank for the push!');
    end);
  FWebSocket.ConnectTimeout := 15000;
  FWebSocket.Connect();
  FWebSocket.TryUpgradeToWebsocket; // <- does not work, always False
  TmpStrings := TStringList.Create();
  try
    TmpStrings.Add('{');
    TmpStrings.Add(Format('"username":"%s",', [FIdentifier]));
    TmpStrings.Add(Format('"password":"%s",', [FKey]));
    TmpStrings.Add('"routing":null,');
    TmpStrings.Add('"events":[');
    TmpStrings.Add('"message:received"');
    TmpStrings.Add('],');
    TmpStrings.Add('"rooms":["' + FWebsiteID + '"]');
    TmpStrings.Add('}');
    // Try to RTM Events subscribe
    FWebSocket.SendCmd(TmpStrings.Text); // <- Connection Closed Gracefully
//    FWebSocket.SocketIO.Send(TmpStrings.Text); // <- Cannot send: no socket.io connections!
  finally
    FreeAndNil(TmpStrings);
  end;
end;

Что я делаю не так? Пожалуйста, объясните, как это сделатьправый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...