我正在尝试使用pushbullet api在C中使用libcurl库。我正在尝试连接到https://stream.pushbullet.com/streaming/的流。问题是一旦收到任何数据时调用了回调函数,连接就会被关闭。我想让它无限期地运行并让它在每次收到新数据时调用回调函数。
这是我试过的代码
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
int getwss_cb(char *data) {
printf("Received data: %s\n", data);
}
int getwss(void) {
CURL *easyhandle = curl_easy_init();
curl_easy_setopt(easyhandle, CURLOPT_URL, "https://stream.pushbullet.com/streaming/<access-token>");
curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, getwss_cb);
curl_easy_perform(easyhandle);
return 0;
}
基本上我需要getwss()函数来运行getwss_cb()
后继续运行答案 0 :(得分:1)
您的回调没有使用正确的原型,并且它没有返回正确的返回码:
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);
请参阅解释回调的完整文档以及它应该在CURLOPT_WRITEFUNCTION选项的文档中返回的内容。
另请注意,传递给回调的数据不零终止,因此您无法打印它。