uniGUI使用WebSocket进行客户端之间的实时消息处理
  T2OqV3qDOzaQ 2023年11月24日 21 0

Unigui可以使用WebSocket进行客户端之间的实时互相发消息。WebSocket是一种支持双向通信的网络协议,可以使客户端和服务器之间实时地进行数据交换。现在的uniGUI最新版本,经过几个版本的迭代,已经完美支持WebSocket。

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

uniGUI使用WebSocket进行客户端之间的实时消息处理_UI

打开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来接收消息,如下图,是官方的例子:

uniGUI使用WebSocket进行客户端之间的实时消息处理_UI_02

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
T2OqV3qDOzaQ