AX向在线用户发送消息
2013-05-16 19:12
288 查看
在AX3.0中管理员可以通过在线用户管理对在线用户进行发送信息,是通过ClientSessions::sendMessage(int _sessionId, str _title, str _message)来发送,但在AX4.0之后的版本中就没有这个方法了。
现在可以使用的也就只有下面两种方法了
1、修改预警的功能,将消息通过预警功能传递
2、如果是远程终端的话,直接在远程服务器的任务管理器发送
但也一些问题:
1、通过预警功能,用户端只是显示有预警消息,并没有直接一个BOX弹出,经常被用户忽略
2、远程服务器任务管理器发送,如果不是使用远程桌面终端登录的就无法接收消息
那还没有没有其他方法呢?
今天翻一下Class/info,看到了一个方法watchDog(),就是在AX启动登录后,运行并按一定时间间隔不断循环这个方法。
看到这个,问题就解决了,我也写个这样的方法readMessage(),然后添加张表SysUserMessage,字段UserId,消息字段Message,是否已读字段IsRead,将要发送的消息根据UserId保存到表中,最后在readMessage()中读取弹出一个BOX
我默认设置的循环间隔是3秒,读取到消息后,更新消息已读取,用Box强制弹出。
这个方法的调用就放在startupPost()中
最后来看看效果,简单做了个发送界面,将要发送的消息根据UserId保存到表SysUserMessage中就可以了
简简单单就实现了发送在线消息的功能
现在可以使用的也就只有下面两种方法了
1、修改预警的功能,将消息通过预警功能传递
2、如果是远程终端的话,直接在远程服务器的任务管理器发送
但也一些问题:
1、通过预警功能,用户端只是显示有预警消息,并没有直接一个BOX弹出,经常被用户忽略
2、远程服务器任务管理器发送,如果不是使用远程桌面终端登录的就无法接收消息
那还没有没有其他方法呢?
今天翻一下Class/info,看到了一个方法watchDog(),就是在AX启动登录后,运行并按一定时间间隔不断循环这个方法。
void watchDog() { int infologLine; this.setTimeOut(methodstr(Info,watchDog), #watchdogInterval, false); infologLine = this.line(); try { SysUserLog::updateLogoutTime(); SysUtilElementsLog::persistRegisteredUsages(); } catch { // // Clean up any exception messages in the infolog, caused by logging. // this.clear(infologLine); } }
看到这个,问题就解决了,我也写个这样的方法readMessage(),然后添加张表SysUserMessage,字段UserId,消息字段Message,是否已读字段IsRead,将要发送的消息根据UserId保存到表中,最后在readMessage()中读取弹出一个BOX
void readMessage() { SysUserMessage userMessage=SysUserMessage::findUserId(curuserid(),true); ; this.setTimeOut(methodstr(Info,readMessage), 3000, false); if(userMessage && !userMessage.IsRead) { ttsbegin; userMessage.IsRead=true; userMessage.update(); ttscommit; Box::info(userMessage.Message); } }
我默认设置的循环间隔是3秒,读取到消息后,更新消息已读取,用Box强制弹出。
这个方法的调用就放在startupPost()中
/* No SYS code must exist in this method */ void startupPost() { this.setTimeOut(methodstr(Info,readMessage), 3000, false); }
最后来看看效果,简单做了个发送界面,将要发送的消息根据UserId保存到表SysUserMessage中就可以了
简简单单就实现了发送在线消息的功能
相关文章推荐
- EventInbox 在线发送消息与Email给用户
- smack+openfire插件实现广播。向所有在线用户发送消息。
- 广泛使用的一个对特定在线用户发送系统消息的程序
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
- 模态窗口其实就是在当前窗口调用系统的消息循环,响应用户的操作,将相关的消息发送到对应的窗口(转)
- 内核模块向用户进程发送消息
- linux 终端中向其他用户发送消息
- linux 终端中向其他用户发送消息
- 微信根据openid发送消息,获取用户详情,获取access_token类
- Linux给指定用户或全部用户(已登录)发送消息
- Java实现app接口和Socket消息传递(11)获取在线用户列表
- SpringBoot学习-(十四)SpringBoot中建立WebSocket连接(STOMP实现发送消息给指定用户)
- linux 终端中向其他用户发送消息
- linux 终端中向其他用户发送消息
- java集成WebSocket向指定用户发送消息
- 【极光推送】给指定用户发送消息
- 关于 微信发送被动回复音乐消息 用户接收不到的问题
- SM02 发送系统消息给所有Client用户
- linux上 用户间发送消息 通信
- 2017微信数据报告 截至9月日登录用户超9亿日发送消息380亿次