gpt4 book ai didi

c++ - 收到 native 消息,但响应失败

转载 作者:行者123 更新时间:2023-11-30 05:09:15 26 4
gpt4 key购买 nike

我正在开发一个 macOS 应用程序,它可以通过 native messaging 与 google chrome extension 进行通信。

我使用了来自 here 的谷歌官方文档,所以我成功地收到了来自扩展的数据(如下所示)。

但是当我试图回答时,我总是得到一个错误。我的回复是 JSON 格式,它是:

{
"text":
"Client Started"
}

我将 swift 用于我的 viewController 并将 Objective-c++ 用于本地消息传递:

ViewController.swift:

let stream = StreamReader()
override func viewDidLoad() {
super.viewDidLoad()
stream.getStream()
stream.writeStream("{\"text\":\"Client Started\"}")
}

StreamReader.m:

- (void)WriteStream:(NSString *)JSONResponse {
NSString *JSONResponseArray = [NSString stringWithFormat:@"%@", JSONResponse];
std::string outMsg = [JSONResponseArray UTF8String];
unsigned int len = outMsg.length();
std::cout.write(reinterpret_cast<const char *>(&len), 4);
std::cout << outMsg.data() << std::flush;
}

错误:

enter image description here

注意:我尝试更改响应及其长度,但两种情况下的错误都是一样的。

最佳答案

您应该将字符串的长度信息输出到标准输出:

    unsigned int len = outMsg.length();
std::cout<< char(len & 0xFF)
<< char(((len >> 8) & 0xFF))
<< char(((len >> 16) & 0xFF))
<< char(((len >> 24) & 0xFF));

现在您可以将字符串数据写入标准输出。

然后使用std::flush立即刷新数据,即将数据从我们的本地消息传递主机发送到目标扩展。我注意到,如果我们不这样做,那么这些数据将不会立即发送到目的地。

std::cout << outMsg.data() << std::flush;

关于c++ - 收到 native 消息,但响应失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46301554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com