libcurl 在 writefunction 回调后继续 运行

libcurl continue running after writefunction callback

我正在尝试将 C 中的 libcurl 库与 pushbullet api 一起使用。我正在尝试连接到 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()

之后

您的回调没有使用正确的原型,也没有 return 正确的 return 代码:

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata);

CURLOPT_WRITEFUNCTION 选项的文档中查看解释回调及其应该做什么的完整文档 return。

另请注意,传递给回调的数据不是零终止的,因此您不能只打印 f-%s 它。