получилось забавно (скриншот 1), но не совсем то что я хотел. GUI мне вообще никак не нужен. но в противном случае компоненты ведут себя странно если консольное приложение см скриншот 2. на топики не подписывается, т.е. подписка работает только если VCL и мы подписку в кнопке сделали, а не сразу после подключения к серверу(даже если добавить пазузу не помогает) (в кнсольном). не формируется GUID (скриншот 2) и вообще как то странно себя ведет ИМЕННО В КОНСОЛЬНОМ ПРИЛОЕЖЕНИИ хоть под линукс, хоть под Windows. только если VCL. как будто часть задач отрезали. ошибок не выводит,не понятно что происходит. код прилагаю. я не силен в дельфи- помогите.
Вопрос
fsdb
Ребята подскажите /помогите.
есть вот эта демка http://www.esegece.com/websockets/protocols/mqtt
и использовал crossvcl-trial.
получилось забавно (скриншот 1), но не совсем то что я хотел. GUI мне вообще никак не нужен. но в противном случае компоненты ведут себя странно если консольное приложение см скриншот 2. на топики не подписывается, т.е. подписка работает только если VCL и мы подписку в кнопке сделали, а не сразу после подключения к серверу(даже если добавить пазузу не помогает) (в кнсольном). не формируется GUID (скриншот 2) и вообще как то странно себя ведет ИМЕННО В КОНСОЛЬНОМ ПРИЛОЕЖЕНИИ хоть под линукс, хоть под Windows. только если VCL. как будто часть задач отрезали. ошибок не выводит,не понятно что происходит. код прилагаю. я не силен в дельфи- помогите.
program LinuxMQTT; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, sgcWebSocket_Classes, sgcWebSocket_Client, sgcWebSocket, sgcWebSocket_Protocol_Base_Client, idGlobal, sgcWebSocket_Protocols, sgcWebSocket_Types, sgcWebSocket_Classes_Indy, sgcWebSocket_Protocol_MQTT_Client, sgcWebSocket_Protocol_MQTT_Message; Type OnMyPublish = Class procedure OnMQTTPublish(Connection: TsgcWSConnection; aTopic, aText: string); end; procedure OnMyPublish.OnMQTTPublish(Connection: TsgcWSConnection; aTopic: string; aText: string); begin writeln(aTopic+aText); end; var WSClient: TsgcWebSocketClient; MQTT:TsgcWSProtocol_MQTT_Client; MyPublish:OnMyPublish; begin WSClient:=TsgcWebSocketClient.Create(nil); WSClient.ConnectTimeout:=0; WSClient.TLS:=false; WSClient.Proxy.Enabled := false; WSClient.Proxy.Username := ''; WSClient.Proxy.Password := ''; WSClient.Proxy.Host := ''; WSClient.Port:=80; WSClient.Host :='192.168.1.40'; //40 WSClient.Authentication.Basic.Enabled:=false; WSClient.Authentication.Enabled:=false; WSClient.Authentication.User:=''; WSClient.Authentication.Password:=''; WSClient.Authentication.URL.Enabled:=true; WSClient.Authentication.Session.Enabled:=true; WSClient.Extensions.DeflateFrame.Enabled:=false; WSClient.Extensions.DeflateFrame.WindowBits:=15; WSClient.Extensions.PerMessage_Deflate.ClientMaxWindowBits:=15; WSClient.Extensions.PerMessage_Deflate.ClientNoContextTakeOver:=false; WSClient.Extensions.PerMessage_Deflate.Enabled:=false; WSClient.Extensions.PerMessage_Deflate.MemLevel:=1; WSClient.Extensions.PerMessage_Deflate.ServerMaxWindowBits:=15; WSClient.Extensions.PerMessage_Deflate.ServerNoContextTakeOver:=false; WSClient.ConnectTimeout:=0; WSClient.Extensions.DeflateFrame.Enabled:=false; WSClient.Extensions.DeflateFrame.WindowBits:=15; WSClient.NotifyEvents:=neAsynchronous; WSClient.IPVersion:=idGlobal.TIdIPVersion(Id_IPv4); WSClient.HeartBeat.Enabled:=false; WSClient.HeartBeat.Interval:=300; WSClient.HeartBeat.Timeout:=0; WSClient.NotifyEvents:=sgcWebSocket_Types.TwsNotifyEvent(neAsynchronous); WSClient.Options.FragmentedMessages:=frgOnlyBuffer; WSClient.Options.Origin:=''; WSClient.Options.Parameters:='/ws'; WSClient.Options.RaiseDisconnectExceptions:=True; WSClient.Specifications.Drafts.Hixie76:=false; WSClient.Specifications.RFC6455:=true; WSClient.ReadTimeout:=-1; WSClient.TLS:=false; MQTT:=TsgcWSPClient_MQTT.Create(nil); MyPublish:=OnMyPublish.Create; MQTT.OnMQTTPublish:=MyPublish.OnMQTTPublish; MQTT.Authentication.Enabled:=false; MQTT.Authentication.Password:=''; MQTT.Authentication.UserName:=''; MQTT.Client:=WSClient; MQTT.Guid:=''; MQTT.HeartBeat.Enabled:=true; MQTT.HeartBeat.Interval:=300; MQTT.Authentication.Enabled := false; MQTT.Authentication.UserName := ''; // requires username MQTT.Authentication.Password := ''; // requires username MQTT.LastWillTestament.Enabled:=false; MQTT.LastWillTestament.QoS:=mtqsAtMostOnce; MQTT.LastWillTestament.Retain:=false; MQTT.LastWillTestament.Text:=''; MQTT.LastWillTestament.Topic:=''; WSClient.Active := True; // MQTT.Connect; MQTT.Subscribe('tms/chat'); //получение инфы MQTT.Publish('tms/chat', '3333333', TmqttQoS(0), false); //раздача инфы end.
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.