通过satrda的消息通讯模块,PB,VB,Delphi,JS等各种语言可以实现客户端之间或客户端与网页之间的相互通讯,消息通讯基于WebSocket协议,可用于实现即时提醒和互发消息。消息通讯单服务器可以支持数十万并发连接。
实现方法
1.下载SATRDA
最新版本和示例可在QQ群:345559891 下载
2.运行服务端
运行示例server目录下面的satserver.exe
3.源码
PB源码(参考pb示例中w_push窗口)
//连接服务端
uo_client.of_start("127.0.0.1:5555","user1;user2")
//发送消息
uo_client.of_publish( "user1", "发送消息测试")
//停止
uo_client.of_stop()
VB源码(参考vb示例中form2窗口)
//连接服务器
Client.StartClient "127.0.0.1:5555","user1;user2"
//发送消息
Call Client.Publish("user1", "发送消息测试", LenB("发送消息测试"))
//停止服务
Client.StopClient
Delphi源码(参考delphi示例中unit1窗口)
//连接服务器
PushClient_Start(_client,PAnsiChar('127.0.0.1:5555'),PAnsiChar('user1;user2'));
//发送消息
PushClient_Pulish(_client,PAnsiChar('user1'),PAnsiChar('发送消息测试'), length('发送消息测试'));
//停止服务
PushClient_Stop(_client);
易语言
.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 消息通讯, 消息通讯类
.程序集变量 旧窗口回调函数, 子程序指针
.子程序 _打开_被单击
消息通讯.开启 (编辑框_服务器.内容, 编辑框_订阅主题.内容)
.子程序 _停止_被单击
消息通讯.停止 ()
.子程序 _发送_被单击
消息通讯.发送消息 (编辑框_发送主题.内容, 编辑框_消息.内容)
.子程序 __启动窗口_创建完毕
消息通讯.设置事件 (取窗口句柄 ())
附加到页面 (取窗口句柄 ())
旧窗口回调函数 = 替换窗口回调 (取窗口句柄 (), -4, &新窗口回调函数)
.子程序 新窗口回调函数, 整数型
.参数 窗口句柄_, 整数型
.参数 消息, 整数型
.参数 参数1, 整数型
.参数 参数2, 整数型
.局部变量 收到消息, 文本型
.判断开始 (消息 = #消息通讯_状态)
.如果真 (参数1 = #状态_正在连接)
加入日志 (“正在连接”)
.如果真结束
.如果真 (参数1 = #状态_正在关闭)
加入日志 (“正在关闭”)
.如果真结束
.如果真 (参数1 = #状态_已连接)
加入日志 (“已连接”)
.如果真结束
.如果真 (参数1 = #状态_已关闭)
加入日志 (“已关闭”)
.如果真结束
.判断 (消息 = #消息通讯_事件)
收到消息 = 消息通讯.取消息 (参数1, 参数2)
加入日志 (到文本 (收到消息))
.默认
.判断结束
' 下面调用原来的回调来处理其它消息,去掉就假死
返回 (执行原窗口回调 (旧窗口回调函数, 窗口句柄_, 消息, 参数1, 参数2))
.子程序 加入日志
.参数 日志, 文本型
编辑框_显示.内容 = 编辑框_显示.内容 + 日志 + #换行符
4.运行显示界面
说明
服务端地址:填写连接服务器的ip和端口号本机默认是127.0.0.1:5555
订阅主题:表示客户端想要接收的主题,多个以;分隔
比如:user1;user2表示user1和user2的主题消息都能接收
发送主题:需要发送的主题
发送消息:发送的内容
在浏览器中输入 http://127.0.0.1:5555/websocket.html 可以打开示例的网页界面,界面和应用程序的界面差不多。
websocket.html文件可以在server/public目录下面找到
5.消息通讯
在应用程序和网页中点击连接,并发送消息,可以验证互相通讯
HTTP推送消息
可以通过Http Get方法进行推送,url如例
http://127.0.0.1:5555/pushmessage?topic=user1&message=11234234
topic表示主题
message表示要推送的消息