首先,需要查看您的API密钥是否正确以及是否启用了Futures API权限。
如果API密钥已确认正确,并且有足够的权限,请检查您的代码是否正确设置了连接和订阅。以下是一个示例代码,您可以基于此进行修改和调试:
#include
#include
#include
#include
#define MAX_RETRY_COUNTS 20 // 尝试重新连接的最大次数
#define BUF_SIZE 4096 // WebSocket数据缓存大小
struct lws_context *context = NULL;
struct lws *wsi = NULL;
int interrupted = 0, completed = 0, callback_return = 0;
char input_url[] = "wss://fstream.binance.com/ws/bnbbtc@aggTrade"; // Binance Future WebSocket连接地址
char output_buffer[BUF_SIZE];
/* 这里定义的是当前WebSocket连接的回调函数,根据您的代码需要进行调整 */
static int callback(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
{
switch (reason)
{
case LWS_CALLBACK_CLIENT_ESTABLISHED:
printf("Connection established\n");
break;
case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:
printf("Connection error\n");
return -1;
case LWS_CALLBACK_CLIENT_RECEIVE:
memcpy(output_buffer, in, len);
output_buffer[len] = '\0';
printf("%s\n", output_buffer);
break;
default:
break;
}
return 0;
}
/* WebSocket连接创建函数 */
static void connect_to_ws()
{
int retry_counts = 0;
printf("Connecting to %s...\n", input_url);
/* WebSocket协议选项设置 */
struct lws_client_connect_info conn_info = {
.context = context,
.address = input_url,
.port = 443,
.path = "",
.host = "fstream.binance.com",
.origin = "fstream.binance.com",
.protocol = NULL,
.iface = NULL,
.ssl_connection = LCCSCF_USE_SSL,
.local_protocol_name = NULL,
.headers = NULL,
.extensions = NULL
};
/* 创建WebSocket连接 */
wsi = lws_client_connect_via_info(&conn_info);
/* 等待连接成功或超时或异常 */
while (wsi == NULL && !interrupted && retry_counts++ < MAX_RETRY_COUNTS)
{
lws_service(context, 2000);
printf("...retrying connection...\n");
wsi = lws_client_connect_via_info(&conn_info);
}
/* 连接失败返回 */
if (wsi == NULL)
{
printf("Connection failed\n");
callback_return = -1;
completed = 1;
return;
}
}
/* WebSocket连接主函数 */
int main(int argc, char const *argv[])
{
/* WebSocket协议选项设置 */
struct lws_protocols protocols[] = {
{ NULL, callback, 0, 1024 },
{ NULL, NULL, 0, 0 } /* terminator */
};
struct lws_context_creation_info context_info = {
.port = CONTEXT_PORT_NO_LISTEN,
.protocols = protocols,
.gid = -1,
.uid = -1,
.options = LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT | LWS_SERVER_OPTION