在Thrift的node.js中创build一个HttpClient

我正在使用跨平台集成的节俭。 我有一个python服务器在节俭。

Python服务器

#!/usr/bin/env python port = 30303 host = '127.0.0.1' import sys sys.path.append('gen-py') from helloworld import HelloWorld from helloworld.ttypes import * from thrift.transport import TSocket from thrift.transport import TTransport from thrift.transport import THttpClient from thrift.protocol import TBinaryProtocol from thrift.protocol import TJSONProtocol from thrift.server import TServer from thrift.server import THttpServer import socket class HelloWorldHandler: def __init__(self): self.log = {} def sayHello(self): print "sayHello()" return "say hello from " + socket.gethostbyname(socket.gethostname()) handler = HelloWorldHandler() processor = HelloWorld.Processor(handler) transport = TSocket.TServerSocket(host=host, port=port) tfactory = TTransport.TBufferedTransportFactory() pfactory = TBinaryProtocol.TBinaryProtocolFactory() #pfactory = TJSONProtocol.TJSONProtocolFactory() #server = THttpServer.THttpServer(processor, (host, port), pfactory) server = TServer.TSimpleServer(processor, transport, tfactory, pfactory) print "Starting python server..." server.serve() print "done!" 

我在thrift中创build了一个节点客户机,它能够在python中创buildTSimpleServer时访问python服务器,但在创buildTHttpServer时却无法连接

节点客户端

 var thrift = require('thrift'); var ThriftTransports = require('./node_modules/thrift/lib/thrift/transport.js'); var ThriftProtocols = require('./node_modules/thrift/lib/thrift/protocol.js'); var Calculator = require('./gen-nodejs/HelloWorld.js'); ttypes = require('./gen-nodejs/helloworld_types.js'); transport = ThriftTransports.TBufferedTransport() //protocol = ThriftProtocols.TJSONProtocol() protocol = ThriftProtocols.TBinaryProtocol() var connection = thrift.createConnection('127.0.0.1', 30303, { transport : transport, protocol : protocol }); connection.on('error', function(err) { console.log("error in connection"); console.error(err); }); connection.on('connect', function(){ var client = thrift.createClient(Calculator,connection); client.sayHello(function(err, response) { console.log(response); connection.end(); }); }) 

在python中运行THttpServer时,我确信我使用了JSON协议。 我不知道如何创build节点的HttpClient节俭。

对不起,代码倾销,但我认为这将使问题更清楚。 谢谢

节点http客户端支持已于2014年4月23日添加。库支持目前只在开发分支中,但在不久的将来某些时候将以0.9.2发布。 以下是使用http节点连接/客户端称为heloSvc的服务的示例客户端:

 var thrift = require('thrift'); var helloSvc = require('./gen-nodejs/helloSvc.js'); var options = { transport: thrift.TBufferedTransport, protocol: thrift.TJSONProtocol, path: "/hello", headers: {"Connection": "close"} }; var connection = thrift.createHttpConnection("localhost", 9090, options); var client = thrift.createHttpClient(helloSvc, connection); client.getMessage("Thurston Howell", function(error, result) { console.log("Msg from server: " + result); });