消息推送
发送或者获取推送消息
登录
通过 uo_vdncore 组件登录到服务端,服务端会根据设置自动推送用户的上下线信息给客户端。
登录前首先对组件进行属性初始化
//=========================================================
//完成vdn组件的初始化,可以在属性窗口里录入,也可以在代码里控制
//=========================================================
luo_vdn.sn="序列号"
luo_vdn.desKey="Topany" //与服务端的DesKey对应
luo_vdn.url="http://www.xxx.com:8088 //域名或服务器IP登录消息服务
uo_vdn.Login(用户组,用户 ID,用户名,备注)用户组:V2018.1.6 版本之后支持多用户组,多个用户组用分号(;)分割,例如:分组 1;分组 2**
返回: integer 1 成功 -1 失败
异步登录
异步多线程登录消息服务,login 函数立即返回,登录由其他线程执行。 V2021.2.1.2 版本后支持
uo_vdncore.Msg_AsyncLogin=True异步登录成功会触发 Success 事件,as_type="WSLogin";
异步登录失败会触发 Error 事件,as_type="WSLoginError";
相关属性
OnlineFilter
- 类型: string
- 格式: 连接类型/组
- 默认: ^self
获取服务端在线用户列表及上线消息的过滤条件,按照连接类型及组进行区分
连接类型
- online 消息在线
- datalink 数据库在线
组
- all 所有
- 组名 具体的组名
V2018.1.6 版本之后支持多用户组,多个用户组用分号(;)分割,例如:分组 1;分组 2
举例
| 值 | 说明 |
|---|---|
| all | 获取所有的在线用户用户列表 |
| ^self | 获取类型为消息在线,组同本次登录指定的用户组的在线列表 |
| online/all | 获取所有的消息在线用户列表,所有的分组 |
| online/常用 | 获取类型为消息在线,组为"常用"的用户在线列表 |
ShowSelf
- 类型: boolean
- 默认: False
在线用户列表是否显示自己
- True 显示
- False 不显示
GetMsg
- 类型: boolean
- 默认: True
是否接收消息推送。登录只为完成其他的一些操作,可以设置不接收消息推送。
- True 接收
- False 不接收
GetOnlneMsg
- 类型: boolean
- 默认: True
是否获取在线用户消息。用户上线后服务器会自动广播用户上线消息给在线用户,该值决定是否接收该类信息。
- True 接收
- False 不接收
GetSimpleOnlne
- 类型: boolean
- 默认: True
只获取简短的在线用户信息,不包含 IP、上线时间、状态等息息
Msg_AsyncLogin
类型: boolean
默认: False
是否异步登录消息服务端
True 异步登录
False 同步登录
发送消息
uo_vdn.SendMsg(接收人,消息类型,消息内容)返回: integer
- -1 失败
- 0 用户没有接收到消息(用户状态不为在线)
- > 0 接收到消息的用户数
接收人
设置消息接收对象,值分为以下几种
接收消息 ResponseID,多个 ID 用;分割
all 为发送给所有符合过滤条件(OnlineFilter)的用户
$all 同 all 的区别是不会发送给发送者自己
group:组名 发送给指定的组,比如 group:erp,多个用户组用分号(;)分割,例如:分组 1;分组 2;
$group:组名 同 group 的区别是不会发送给发送者自己
user:用户 ID,多个 ID 使用;分割,例如:user:1111;2222 ((登录时使用的 ID,区别于 ResponseID)
消息类型
自定义字符串,例如:
msg,对应消息接收 ResponseMsg 事件中的 as_type 参数,区分不同类型的消息
uo_vdn.SendMsgToUser(用户 ID,消息类型,消息内容)- 返回: integer
- -1 失败
- 0 用户没有接收到消息(用户状态不为在线)
- > 0 接收到消息的用户数
该函数的作用是发送消息给指定的用户 ID,该用户 ID 为 Login 函数中所指定的用户 ID,其他参数同 SendMsg 函数
外部发送消息

首先设置【Web 设置】--【WebSocket】--【外部消息】为允许
支持通过外部以 Get 或者 Post 的方式发送消息,格式同上面 SendMsg 函数的参数,基本格式如下:
| 参数 | 说明 | 举例 |
|---|---|---|
| to | 消息的接收人,参见上面【接收人】 不支持$all及$group 这对外部发送消息无意义. | to=user:123/456 |
| msgtype | 消息类型,用以区分不同的消息类型,通常为 msg当使用 `msg`` 之外的值时,系统将自动增加前缀 external_ 例如:msgtype=sys 则客户端收到的 msgtype 值为 external_sys | msgtype=msg |
| msg | 消息主体 使用 Get 方式或者 application/x-www-form-urlencoded 格式时,当含有中文或者特殊字符时建议使用 URLEncode 进行编码 | msg=hello |
外部发送消息客户端收到消息的 FromID 及 FromUserID 均为:External
消息发送成功,返回:succeed:n ,n 为成功推送消息给多少用户,否则为失败
URL 传参发送
http://localhost:8088/msg?to=all&msgtype=msg&msg=hello
http://localhost:8088/msg?to=group:通用&msgtype=msg&msg=hello
http://localhost:8088/msg?to=group:通用;分组 2&msgtype=msg&msg=hello
http://localhost:8088/msg?to=user:9999/8888&msgtype=msg&msg=hello

Ajax 发送消息
- 以 Get 方式发送消息
$.ajax({
url: serverURL + "?to=all&msgtype=msg&msg=hello",
type: "GET",
success: function (data, status, xhr) {
//返回值
$("#t_return").text(data);
},
error: function (xhr, error, exception) {
//ajax 发生错误
alert(error + " " + exception.toString() + " (status:" + xhr.status + " state:" + xhr.readyState + ")");
},
});- 以 Post 方式 urlencoded 格式发送消息:
$.ajax({
url: serverURL,
type: "POST",
data: "to=all&msgtype=msg&msg=hello",
success: function (data, status, xhr) {
if (data.substring(0, 7) == "succeed") {
//返回值
$("#t_return").text(data);
} else {
//Error 系统返回错误信息
alert(data);
}
},
error: function (xhr, error, exception) {
//ajax 发生错误
alert(error + " " + exception.toString() + " (status:" + xhr.status + " state:" + xhr.readyState + ")");
},
});- 以 Post 方式 JSON 格式发送消息:
var data = {
to: "all",
msgtype: "msg",
msg: "hello",
};
var jsonStr = JSON.stringify(data);
$.ajax({
url: serverURL,
type: "POST",
data: jsonStr,
contentType: "application/json",
success: function (data, status, xhr) {
if (data.substring(0, 7) == "succeed") {
//返回值
$("#t_return").text(data);
} else {
//Error 系统返回错误信息
alert(data);
}
},
error: function (xhr, error, exception) {
//ajax 发生错误
alert(error + " " + exception.toString() + " (status:" + xhr.status + " state:" + xhr.readyState + ")");
},
});接收消息
event responsemsg ( as_type, as_msg, as_fromuserid, as_fromid )通过responsemsg事件接收服务器推送的消息。
| 参数 | 类型 | 说明 |
|---|---|---|
| as_type | string | 消息类型 |
| as_msg | string | 消息内容 |
| as_FromUserID | string | 发送消息的用户 ID |
| as_fromid | string | 发送消息的 ResponseID |
详细用法参见我们提供的示例代码:
示例代码
位置: Example\PB 演示示例\VDNDemo.pbw
对象: w_msg
注销登录
uo_vdn.Logout()- 返回: integer 1 成功 -1 失败
