|
发表于 2025-4-6 08:35:52
|
显示全部楼层
浙江省杭州市
wsocket
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | wsClient | 类_WSClient_HP | | HP_初始化 () wsClient. 创建 ()wsClient. 置接收回调 (&接收回调函数 ) 如果真 (wsClient. 连接 ("wss://echo.websocket.events", 443, 真) == 假) 信息框 ("连接失败", 0, , ) |
接收回调函数 | | | |
连接ID | 整数型 | | | | 数据类型 | 整数型 ' 0-文本 1-二进制 | | | | 数据指针 | 整数型 | | | | 数据长度 | 整数型 | | | | 如果 (数据类型 == 0 ) 接收内容 = 指针到文本 (数据指针, 数据长度, 真) 编辑框1. 加入文本 ("收到消息:" + 接收内容 + #换行符 )  字节集数据 = 指针到字节集 (数据指针, 数据长度 ) 消息内容 = 编辑框输入.内容 如果真 (消息内容 ≠ "" ) wsClient. 发送文本 (消息内容 )  编辑框输入.内容 = ""  wsClient. 断开 ()HP_清理 ()
系统api(不推荐)
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 套接字 | 整数型 | |
套接字 = 创建套接字 ()连接服务器 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | 服务器地址 | 文本型 | | | 服务器端口 | 整数型 | | |
服务器地址 = "echo.websocket.events" 服务器端口 = 80 如果真 (连接套接字 (套接字, 服务器地址, 服务器端口 ) == 假) 信息框 ("连接失败", 0, , ) 返回 () 发送数据 (套接字, 生成握手请求 (服务器地址, 服务器端口 )) 启动线程 (&接收数据线程, , )握手请求 = "GET / HTTP/1.1" + #换行符 + "Host: " + 主机 + ":" + 到文本 (端口 ) + #换行符 + "Upgrade: websocket" + #换行符 + "Connection: Upgrade" + #换行符 + "Sec-WebSocket-Key: " + 取随机Base64密钥 () + #换行符 + "Sec-WebSocket-Version: 13" + #换行符 + #换行符 返回 (握手请求 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 缓冲区 | 字节集 | | | 数据长度 | 整数型 | | |
判断循环首 (真) 数据长度 = 接收数据 (套接字, 缓冲区 ) 如果真 (数据长度 ≤ 0 ) 断开连接 () 跳出循环 ()  解析WebSocket帧 (缓冲区 ) 判断循环尾 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | opcode | 整数型 | | | 有效数据 | 字节集 | | |
opcode = 位与 (数据帧 , 0x0F ) 判断 (opcode == 1 )  有效数据 = 解码WebSocket数据 (数据帧 ) 编辑框1. 加入文本 ("收到消息:" + 到文本 (有效数据 ) + #换行符 ) 判断 (opcode == 2 )  变量名 | 类 型 | 静态 | 数组 | 备 注 | 掩码键 | 字节集 | | | 数据长度 | 整数型 | | | 结果数据 | 字节集 | | |
数据长度 = 位与 (数据帧 , 0x7F ) 如果 (数据长度 == 126 ) 数据长度 = 取字节集数据 (取字节集中间 (数据帧, 3, 2 ), #短整数型, ). 否则如果 (数据长度 == 127 ) 数据长度 = 取字节集数据 (取字节集中间 (数据帧, 3, 8 ), #长整数型, ) 掩码键 = 取字节集中间 (数据帧, 6, 4 ) 结果数据 = 取字节集中间 (数据帧, 10, 数据长度 ) 计次循环首 (取字节集长度 (结果数据 ), i ) 结果数据 [i ] = 位异或 (结果数据 [i ], 掩码键 [ (i - 1 ) % 4 + 1 ]) 计次循环尾 ()返回 (结果数据 )
|
|