How should I use nodejs visit thrift TNonblockingServer or to communicate with TNonblockingSocket

28 views
Skip to first unread message

lengxia...@gmail.com

unread,
Apr 13, 2015, 9:48:17 AM4/13/15
to nod...@googlegroups.com
I'm trying to use thrift to relalize communication between nodejs client and Java server

Thrift offer different kinds of java server which have been implemented
· TSimpleServer
· TNonblockingServer
· THsHaServer
· TThreadedSelectorServer
· TThreadPoolServer

I have successfully used nodejs client to call the function in TTSimpleServer and TThreadPoolServer which both use TServerSocket to initialize

    TServerSocket serverTransport = new TServerSocket(9090);
    
    CalculatorService.Processor<CalculatorImpl> processor = new CalculatorService.Processor<CalculatorImpl>(
    new CalculatorImpl());
    
    TThreadPoolServer.Args args = new TThreadPoolServer.Args(serverTransport).processor(processor);
    args.maxWorkerThreads(100);
    
    TServer server = new TThreadPoolServer(new TThreadPoolServer.Args(
    serverTransport).processor(processor));
   
    System.out.println("Starting server on port 9090 ...");
    server.serve();


but when I try to use TNonblockingServer,TThreadedSelectorServer and THaHsServer ,  I came acrross following error in nodejs client



>     { [Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }

I realized that this may be caused by TNonblockingSocket, is there any method to use nodejs communicate with TNonblockingSocket

    try
    {
    TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(
    9090);
    
    CalculatorService.Processor<CalculatorImpl> processor = new CalculatorService.Processor<CalculatorImpl>(
    new CalculatorImpl());
    
    TServer server = new TThreadedSelectorServer(new TThreadedSelectorServer.Args(
    serverTransport).processor(processor));
    System.out.println("Starting server on port 9090 ...");
    server.serve();
    } catch (TTransportException e)
    {
    e.printStackTrace();
    }

my nodejs client code is as follow

     var thrift = require('thrift');

    var ThriftTransports = require('thrift/transport');
    var ThriftProtocols = require('thrift/protocol');
    var Calculator = require('./gen-nodejs/CalculatorService.js');
    var ttypes = require('./gen-nodejs/tutorial_types');
    
    transport = ThriftTransports.TFramedTransport();
    protocol = ThriftProtocols.TBinaryProtocol();
    
    var connection = thrift.createConnection("localhost", 9090, {
      transport : transport,
      protocol : protocol
    });
    
    connection.on('error', function(err) {
      console.log(err)
    });
    
    // Create a Calculator client with the connection
    var client = thrift.createClient(Calculator, connection);
    
    client.send_print(1,1, function(err, response) {
     console.log("send_print result:" + response);
    });


Reply all
Reply to author
Forward
0 new messages