Nodejs thrift协议0.14.1的使用示例

echo.thrift

namespace go echo

struct EchoReq {
    1: required string msg
}

struct EchoRes {
    1: required string msg
}

service Echo {
    EchoRes echo(1: EchoReq req)
}

 如果是win10的话直接下载exe并执行以下命令即可生成js代码,其它系统可能需要编译安装thrift代码生成器。下载地址https://downloads.apache.org/thrift/

thrift-0.14.1.exe -r --gen js:node echo.thrift

生成的目录结构如下: 

gen-nodejs/
├── CookieService.js
├── cookie_types.js
├── Echo.js
└── echo_types.js

安装thrift包

npm install thrift@0.14.1 --registry=https://registry.npmjs.org/

server.js

var thrift = require("thrift");
var echo = require('./gen-nodejs/Echo.js');
var ttypes = require('./gen-nodejs/echo_types');

var users = {};

//默认传输协议为thrift.TBufferedTransport
//也可以设置为其它传输协议如thrift.TFramedTransport
//默认编码协议为thrift.TBinaryProtocol,
//也可以设置为其它编码协议如:thrift.TCompactProtocol,thrift.TJSONProtocol
var options = {
        transport : thrift.TBufferedTransport
        protocol: thrift.TBinaryProtocol
};

var handler = {
        echo: function(req, callback) {
                console.log("msg:", req.msg);

                callback(null, new ttypes.EchoRes({
                        msg: 'success'
                }));
        }
};
var server = thrift.createServer(echo, handler, options);

server.listen(9898);
console.log("server start");

server.on("error", function(e) {
        console.log(e);
});

client.js

var thrift = require('thrift');

var echo = require('./gen-nodejs/Echo.js');
var ttypes = require('./gen-nodejs/echo_types');

//默认协议为thrift.TBinaryProtocol,
//也可以设置为其它协议如:thrift.TCompactProtocol,thrift.TJSONProtocol
var options = {
        protocol: thrift.TBinaryProtocol
};

var connection = thrift.createConnection('127.0.0.1', 9898, options);
var client = thrift.createClient(echo, connection);

connection.on("error", function(e) {
        console.log(e);
});

connection.on('connect', function() {
        console.log("connected to the thrift server");
});

var x = new ttypes.EchoReq({
        msg: 'You are welcome.'
});

client.echo(x, function(err, res) {
        if (err) {
                console.log(err);
        } else {
                console.log(res);
        }
});

需要注意的是服务端和客户端在protocol参数的设置上必须是相同的协议否则会调用失败。

相关文章:

《thrift协议0.14.1在Nodejs和Go语言之间的跨语言调用的兼容性测试》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Node.js调用OpenAI API的示例代码: ```javascript const fetch = require('node-fetch'); const API_KEY = 'YOUR_API_KEY'; const MODEL_ID = 'davinci'; async function generateText(inputText) { const prompt = inputText.trim(); const url = `https://api.openai.com/v1/models/${MODEL_ID}/completions`; const headers = { 'Content-Type': 'application/json', 'Authorization': `Bearer ${API_KEY}`, }; const body = JSON.stringify({ prompt, max_tokens: 50, n: 1, stop: '\n', }); const response = await fetch(url, { method: 'POST', headers, body }); const data = await response.json(); const text = data.choices[0].text.trim(); return text; } async function main() { const inputText = 'Hello, how are you?'; const outputText = await generateText(inputText); console.log(outputText); } main(); ``` 在上面的示例中,我们首先导入`node-fetch`库,这是一种用于在Node.js中进行HTTP请求的库。然后,我们定义了我们的OpenAI API密钥和模型ID。 接下来,我们定义了一个名为`generateText`的异步函数,该函数将输入文本作为参数,并返回生成的文本。在函数中,我们使用`fetch`函数向OpenAI API发送POST请求。我们使用`headers`对象设置请求头,并将请求体设置为一个JSON字符串。我们将`max_tokens`设置为50,这表示我们想要生成的文本的最大长度为50个标记。我们将`n`设置为1,这表示我们只希望生成一段文本。我们将`stop`设置为`\n`,这表示生成的文本将在第一个换行符处停止。 最后,我们解析API的响应,并从中提取生成的文本。最后,在`main`函数中,我们调用`generateText`函数并打印输出文本。 请注意,此示例代码仅供参考,并且需要您使用自己的OpenAI API密钥和模型ID来运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值