websocket支持库.zip
(199.51 KB, 下载次数: 18)
更新时间:2026-04-25
Websocket(英文)网页套接字(中文,英文名:WebsocketCN)WebsocketServer(英文)网页套接字服务端(中文,英文名:WebsocketServerCN)ConnInfo(连接信息对象)WS_PROXY_NONE:无代理WS_HTTP:HTTP 代理WS_SOCKS5:SOCKS5 代理| 中文命令 | 英文命令 | 参数 | 返回 | 说明 |
|---|---|---|---|---|
| 置消息回调 | setOnMessage | callback | 空 | 设置消息回调 |
| 置打开回调 | setOnOpen | callback | 空 | 设置打开回调 |
| 置连接回调 | setOnConnect | callback | 空 | 设置连接成功回调 |
| 置关闭回调 | setOnClose | callback | 空 | 设置关闭回调 |
| 设置心跳 | setHeartbeat | callback, ms | 逻辑型 | 设置/关闭心跳回调 |
| 置代理 | setProxy | proxy_addr, proxy_type, user, password | 逻辑型 | 设置代理,user/password 可空 |
| 置协议头 | setHeaders | headers | 逻辑型 | 多行 Header(换行分隔) |
| 加协议头 | addHeader | header_line | 逻辑型 | 增加单行或多行 Header |
| 移除协议头 | removeHeader | header_name | 逻辑型 | 按 Header 名移除 |
| 清空协议头 | clearHeaders | 无 | 逻辑型 | 清空后恢复默认 Header |
| 连接 | connect | url | 逻辑型 | 连接 ws:// 或 wss:// |
| 发送文本 | send | text | 逻辑型 | 发送文本帧 |
| 发送字节集 | sendBinary | data, size | 逻辑型 | 发送二进制帧 |
| 发送Ping | sendPing | payload | 逻辑型 | 发送 Ping(文本/字节集均可) |
| 发送Pong | sendPong | payload | 逻辑型 | 发送 Pong(文本/字节集均可) |
| 启动 | start | intervalMs | 逻辑型 | 启动内部轮询线程 |
| 停止 | stop | 无 | 逻辑型 | 停止内部轮询线程 |
| 关闭 | close | code, reason | 逻辑型 | 主动关闭连接 |
| 是否已连接 | isConnected | 无 | 逻辑型 | 当前连接状态 |
| 取响应头 | getResponseHeader | header_name | 文本型 | 读取握手响应头 |
| 取全部响应头 | getResponseHeaders | 无 | 文本型 | 读取全部握手响应头 |
| 获取句柄 | getHandle | 无 | 整数型 | 返回对象指针句柄 |
| 取Websocket | getWebsocket | websocket/handle | Websocket | 由句柄或对象取回对象 |
回调统一签名:void(int p1, int p2, int p3, int p4)(按易语言子程序参数接收)。
setOnMessage
p1:当前 Websocket 对象指针(可用 getWebsocket(p1) 转对象)
p2:opcode(1=文本,2=二进制,8=close,9=ping,10=pong)
p3:当前帧数据指针
p4:当前帧长度
说明:文本帧会额外补 \0 便于直接转文本;p3 不需要也不能由外部释放,如需长期保存请自行拷贝。
setOnOpen
p1:当前对象指针
p2/p3/p4:0
setOnConnect
p1:当前对象指针
p2/p3/p4:0
setOnClose
p1:当前对象指针
p2:close code
p3:reason 指针
p4:reason 长度
setHeaders / addHeader 会按 Header 名去重(大小写不敏感),后设置会覆盖同名旧值。removeHeader 按 Header 名删除。clearHeaders 或 setHeaders("") 时会恢复默认 Header。User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0connect() 成功后再调用 start(),由内部线程驱动消息回调。start(),不会有持续轮询,收消息可能不及时。| 中文命令 | 英文命令 | 参数 | 返回 | 说明 |
|---|---|---|---|---|
| 载入证书路径 | loadCertPath | path, password | 逻辑型 | 载入 PFX 证书文件 |
| 载入证书字节集 | loadCert | cert_bin, password | 逻辑型 | 载入 PFX 二进制 |
| 绑定路径 | bind | path, onOpen, onMessage, onClose, onPing | 逻辑型 | 路由绑定与回调 |
| 启动 | start | address, port, isSSL | 逻辑型 | 启动监听,address 可空 |
| 发送文本 | send | connId, text | 逻辑型 | 向指定连接发送文本 |
| 发送字节集 | sendBinary | connId, data, size | 逻辑型 | 向指定连接发送二进制 |
| 关闭连接 | close | connId | 逻辑型 | 关闭指定连接 |
| 停止 | stop | 无 | 逻辑型 | 停止服务并关闭连接 |
| 取连接数 | getConnectionCount | 无 | 整数型 | 当前连接数量 |
| 取地址 | getAddress | connId | 文本型 | 获取 ip:port |
| 获取句柄 | getHandle | 无 | 整数型 | 返回对象指针句柄 |
| 取WebsocketServer | getWebsocketServer | server/handle | WebsocketServer | 由句柄或对象取回对象 |
| 取ConnInfo | getConnInfo | connId | ConnInfo | 获取连接详细信息 |
start 与 SSLstart("", 9001, 假)。address 为空字符串时,绑定 0.0.0.0(INADDR_ANY)。isSSL=假:按明文 WebSocket 启动,不需要证书。isSSL=真:必须先调用 loadCertPath 或 loadCert 载入 PFX。loadCertPath 与 loadCert 互斥,后调用会覆盖前一次配置。bind(path, onOpen, onMessage, onClose, onPing) 支持多路径,例如 /、/test。
回调统一签名:void(int p1, int p2, int p3, int p4)。
onOpen
p1:connId
p2/p3/p4:0
onMessage
p1:connId
p2:数据指针
p3:数据长度
p4:opcode(1/2/8/9/10)
说明:文本帧回调会补 \0;指针仅在回调期间有效,不需要也不能释放。
onClose
p1:connId
p2/p3/p4:0
onPing
p1:connId
p2/p3/p4:0
说明:服务端收到 Ping 会自动回 Pong。
send(connId, text):文本按 ANSI(GBK) 输入,内部转换为 UTF-8 后发送文本帧。sendBinary(connId, data, size):按原始字节发送,不做编码转换。getConnInfo(connId) 返回 ConnInfo,可读取以下字段:
RefCount:引用计数ConnId:连接IDSocket:套接字句柄Path:握手路径Headers:握手请求头Address:地址文本IP:客户Duan IPPort:客户Duan端口Host:Host 头UserAgent:User-Agent 头ConnectTick:连接建立时间 TickLastActiveTick:最后活跃 TickBytesRecv:累计接收字节BytesSent:累计发送字节MsgRecv:累计接收消息数MsgSent:累计发送消息数LastPingTick:最后 Ping 时间 TickOnOpen:绑定的 onOpen 回调地址OnMessage:绑定的 onMessage 回调地址OnClose:绑定的 onClose 回调地址OnPing:绑定的 onPing 回调地址Closing:是否正在关闭.版本 2
.支持库 WsSupportLib
.子程序 onMessage
.参数 websocket, 整数型
.参数 opcode, 整数型
.参数 data, 整数型
.参数 dataLen, 整数型
.局部变量 w,Websocket
调试输出 ("opcode=", opcode, " len=", dataLen)
调试输出 (指针到文本 (data))
w.getWebsocket(websocket)
w.send('test')
.子程序 _启动子程序, 整数型
.局部变量 ws, Websocket
ws.setOnMessage (&onMessage)
调试输出 (ws.connect ("wss://echo.websocket.events/"))
调试输出 (ws.start (20))
调试输出 (ws.send ("test"))
返回 (0).版本 2
.支持库 WsSupportLib
.子程序 onOpen
.参数 connId, 整数型
.参数 p2, 整数型
.参数 p3, 整数型
.参数 p4, 整数型
调试输出 ("open:", connId)
.子程序 onMsg
.参数 connId, 整数型
.参数 dataPtr, 整数型
.参数 len, 整数型
.参数 opcode, 整数型
调试输出 ("msg conn=", connId, " op=", opcode, " len=", len)
.子程序 _启动子程序, 整数型
.局部变量 srv, WebsocketServer
srv.bind ("/", &onOpen, &onMsg, 0, 0)
调试输出 (srv.start ("", 9001, 假))
返回 (0)getHandle/getWebsocket/getWebsocketServer 建议用于对象转换,不建议直接做无校验指针运算。
这个得支持一下

支持一下| 欢迎光临 精易论坛 (https://bbs.ijingyi.com/) | Powered by Discuz! X3.4 |