服务器连接
概述
服务器连接模块负责与后端服务器建立 WebSocket 连接。支持自动重连、连接状态回调等功能。连接成功后会自动启动登录超时监控(3分钟)。
运行模式
通过 txnet_set_connection_mode 设置,影响连接失败时的行为:
| 模式 | 值 | 连接失败行为 |
|---|---|---|
| 默认模式 | 0 | 自动重连,超过最大次数后调用 exit(1) 退出程序 |
| 自定义模式 | 1 | 仅触发回调,返回 false,由调用方决定后续处理 |
函数
txnet_set_connection_mode
cpp
void txnet_set_connection_mode(int mode);设置连接模式。
| 参数 | 类型 | 说明 |
|---|---|---|
mode | int | 0=默认模式,1=自定义模式 |
默认值: 0(默认模式)
txnet_set_max_reconnect
cpp
void txnet_set_max_reconnect(int count);设置最大重连次数,仅在默认模式下有效。
| 参数 | 类型 | 说明 |
|---|---|---|
count | int | 最大重连次数 |
默认值: 5次
txnet_set_reconnect_interval
cpp
void txnet_set_reconnect_interval(int seconds);设置每次重连之间的等待时间,仅在默认模式下有效。
| 参数 | 类型 | 说明 |
|---|---|---|
seconds | int | 重连间隔秒数 |
默认值: 3秒
txnet_set_connection_callback
cpp
void txnet_set_connection_callback(txnet_connection_callback cb);设置连接状态变化的回调函数。无论哪种模式,状态变化时都会触发回调。
| 参数 | 类型 | 说明 |
|---|---|---|
cb | txnet_connection_callback | 回调函数指针,可为 NULL |
txnet_connect
cpp
bool txnet_connect();连接服务器。此函数会阻塞直到连接成功或最终失败。
| 返回值 | 说明 |
|---|---|
true | 连接成功 |
false | 连接失败(仅自定义模式会返回,默认模式失败后直接 exit) |
txnet_disconnect
cpp
void txnet_disconnect();断开与服务器的连接,释放所有相关资源。
txnet_is_connected
cpp
bool txnet_is_connected();检查当前是否已连接到服务器。
| 返回值 | 说明 |
|---|---|
true | 已连接 |
false | 未连接 |
回调函数
txnet_connection_callback
cpp
typedef void (*txnet_connection_callback)(int status, const char* message);| 参数 | 类型 | 说明 |
|---|---|---|
status | int | 连接状态码 |
message | const char* | 状态描述文本 |
状态码:
| 常量 | 值 | 说明 |
|---|---|---|
TXNET_STATUS_DISCONNECTED | 0 | 已断开连接 |
TXNET_STATUS_CONNECTING | 1 | 正在连接中 |
TXNET_STATUS_CONNECTED | 2 | 连接成功 |
TXNET_STATUS_RECONNECTING | 3 | 正在重连中 |
TXNET_STATUS_FAILED | 4 | 连接失败 |
示例
cpp
#include "txnet.h"
#include <stdio.h>
void onConnectionStatus(int status, const char* message) {
const char* statusNames[] = {"断开", "连接中", "已连接", "重连中", "失败"};
printf("[连接] %s: %s\n", statusNames[status], message);
}
int main() {
txnet_init(&config);
txnet_set_connection_callback(onConnectionStatus);
txnet_set_connection_mode(0);
txnet_set_max_reconnect(3);
txnet_set_reconnect_interval(5);
if (!txnet_connect()) {
printf("连接失败\n");
return 1;
}
printf("连接成功,状态: %d\n", txnet_is_connected());
// ... 业务逻辑 ...
txnet_disconnect();
return 0;
}