首页 > 其他分享 >uniGUI使用WebSocket

uniGUI使用WebSocket

时间:2023-10-16 11:36:19浏览次数:47  
标签:const uniGUI BroadcastMessage 消息 使用 Msg WebSocket

现在的uniGUI最新版本,经过几个版本的迭代,已经完美支持WebSocket。

用起来,也非常简单,默认情况下,已经打开WebSocket。

打开demos中的第一个例子: C:\Program Files (x86)\FMSoft\Framework\uniGUI\Demos\Desktop\WebSocket-Basic

在Main单元,可以看到:

1.如何广播一个消息:

BroadcastMessage('message', ['text', UniEdit1.Text], [boIgnoreCurrentSession])

参数说明:

Msg:字符串类型,发送消息的名称

Args:array of TVarRec,消息值,这是一个数组

Options:TUniBroadcastOption,

TUniBroadcastOption = (
  boClientOnly,
  boIgnoreCurrentSession
);
boClientOnly:

此选项将强制WebSocket消息仅发送到客户端。不会向服务器发送Ajax请求。应该使用JavaScript事件处理程序在客户端本地处理该消息。UI元素将在JavaScript事件处理程序中根据BroadcastMessage方法中发送的参数进行更新。

如果未设置此选项,则每个WebSocket消息还将向服务器发送Ajax请求,以请求服务器更新UI。

boIgnoreCurrentSession:

指示不应将WebSocket消息发送到当前会话。即,当消息在会话上下文中发起时,它应该被传播到除调用了BroadcastMessage方法的当前会话之外的所有其他会话。
用这个参数。来解决当前Session不处理自己发送的消息,也就是说,不触发当前Session的MainForm.OnBroadcastMessage事件。


2.如何接收一个消息:

uniGUI的MainForm有OnBroadcastMessage事件,用来接收消息。

procedure TMainForm.UniFormBroadcastMessage(const Sender: TComponent;
  const Msg: string; const Params: TUniStrings);
begin
  if Msg = 'message' then
  begin
    ShowMessage(Params['text'].AsString);
  end;
end;

 也可用JS来接收消息,如下图,是官方的例子:

 

标签:const,uniGUI,BroadcastMessage,消息,使用,Msg,WebSocket
From: https://www.cnblogs.com/kinglandsoft/p/17761100.html

相关文章

  • BitBake使用攻略--BitBake的语法知识二(转载自https://www.cnblogs.com/chegxy/archive
    目录写在前面1.BitBake中的任务2.任务配置2.1依赖2.1.1内部任务间的依赖2.1.2不同菜谱下的任务间依赖2.1.3运行时态下的依赖2.1.4递归依赖2.1.5任务间的依赖2.2事件2.3校验和3.ClassExtensionMechanism 写在前面这是《BitBake使用攻略》系......
  • BitBake使用攻略--从HelloWorld讲起 (转载自:https://www.cnblogs.com/chegxy/p/1571811
    目录写在前面1.什么是BitBake2.BitBake的安装3.使用BitBake构建一个HelloWorld工程后续 写在前面《BitBake使用攻略》系列文章将从今天开始不定时的更新,主要讲解BitBake的背景,基本语法,功能及其命令等知识,旨在为即将从事Yocto项目和OpenEmbedded项目的同学做一些预......
  • flutter 使用webView
    第一步:安装webView#webviewwebview_flutter:^3.0.2第二步:写入页面SizedBox(width:Get.width,height:Get.height,child:Padding(padding:EdgeInsets.only(top:264.w),child:WebView(initialUrl:controller.url,......
  • Qt/C++编写物联网组件/支持modbus/rtu/tcp/udp/websocket/mqtt/多线程采集
    一、功能特点支持多种协议,包括Modbus_Rtu_Com/Modbus_Rtu_Tcp/Modbus_Rtu_Udp/Modbus_Rtu_Web/Modbus_Tcp/Modbus_Udp/Modbus_Web等,其中web指websocket。支持多种采集通讯方式,包括串口和网络等,可自由拓展其他方式。自定义采集间隔(精确到毫秒)和超时次数,超时后自动将离线的文件......
  • .NET CORE 之 gRPC使用
    gRPC简单介绍gRPC是一种与语言无关的高性能远程过程调用(RPC)框架(google开源的rpc框架)。gRPC默认使用protocolbuffers,这是Google开源的一套成熟的结构数据序列化机制(也可以使用其他数据格式如JSON) gRPC的主要优点是: HTTP2传输现代高性能轻量级RPC框架。协定......
  • 【译】使用保留大小写的查找和替换来保存您的命名方式
    VisualStudio搜索体验获得了一项新功能,允许用户查找和替换文本,而不必担心不同的大小写。例如,方法参数“catalogItemId”和对象属性“CatalogItemId”有相同的名称,但大小写不同,但都应该用类似“productId”的东西替换,并使用各自的大小写。 该功能是由用户请求的,他们......
  • 如何解决使用代理IP后网速变慢的问题
    随着互联网的不断发展,越来越多的人开始使用代理IP来保护自己的隐私和安全。但是,有些人在使用代理IP后发现自己的网速变慢了。那么,如何解决使用代理IP后网速变慢的问题呢?下面我们将从以下几个方面进行详细的介绍。一、代理IP的原理代理IP是一种通过中间服务器来转发网络请求的技术。......
  • 使用 Kubernetes 简化平台工程
    平台工程在现代应用程序开发和部署中发挥的作用至关重要。随着软件应用程序变得越来越复杂和分散,对稳健且可扩展的基础设施的需求变得越来越重要。这就是平台工程的作用所在,它是支持整个软件开发生命周期的支柱。让我们深入探讨平台工程在创建和维护应用程序基础设施方面的重要作......
  • 使用轮廓分数提升时间序列聚类的表现
    我们将使用轮廓分数和一些距离指标来执行时间序列聚类实验,并且进行可视化让我们看看下面的时间序列:如果沿着y轴移动序列添加随机噪声,并随机化这些序列,那么它们几乎无法分辨,如下图所示-现在很难将时间序列列分组为簇:上面的图表是使用以下脚本创建的: https://avoid.overf......
  • update left join 在MySQL和SQL Server使用方式区别
    (1)MySQL使用UPDATEhayl_service_infot1leftjoinhayl_Old_infot2ont1.CERT_NO=t2.CERT_NOsett1.AAP0112=t2.ADDRESSwheret1.AAP0112=''(2)SQLServers使用UPDATEhayl_service_infosetAAP0112=t2.ADDRESSfromhayl_service_infot1leftjoin......