Dial-return
Dial函数返回的连接对象。WebSocket(ws、wss)、TCP(tcp、tls)连接与数据库连接都返回这个对象,数据库连接另有exec()方法。连接失败时Dial()返回空值并记录错误(Rust返回Valid()为false的连接对象)。
属性
| 名称 | 类型 | 描述 |
read(timeout) | function | 读取一条数据。 |
write(data) | function | 发送数据,返回发送的字节数;连接断开时返回 |
close() | function | 关闭连接。设置了自动重连(地址参数 |
exec(sql, ...args) | function | 数据库连接独有:执行SQL语句,用法与返回值同 |
fd() | function | 仅 |
Valid() | function | 仅 |
参考
备注
JavaScript中,数据库连接对象本身也可以作为参数传给threading.Thread()创建的线程、存入threading.Dict()或者通过postMessage()发送给其它线程,在多个线程之间共享同一个连接;连接对象不再被引用时自动关闭连接。Python、Rust不支持在线程间共享连接。
read()的接收缓冲区与各种timeout取值下的行为:
WebSocket收到的数据先进入接收缓冲区(队列),两次read()间隔太长时数据会累积;缓冲区默认最多4096条或16MB(先到为准),超出后丢弃最旧的数据,上限可以用Dial()地址参数中的qsize、qbytes调整。
| 场景 | 不传参数 | -1 | -2 | 2000(毫秒) |
|---|---|---|---|---|
| 缓冲区已有数据 | 立即返回最旧的数据 | 立即返回最旧的数据 | 立即返回最新的数据,丢弃其余 | 立即返回最旧的数据 |
| 缓冲区没有数据 | 阻塞到有数据时返回 | 立即返回空值 | 立即返回空值 | 最多等待2000毫秒,没有数据返回空值 |
| 连接断开或底层正在重连 | 返回空字符串"" | -- | -- | -- |