Reputation: 773
I'm trying to build a javascript client for my Thrift server. The server is up and running and I can get calls to the server working with a PHP client. I just can't figure out the javascript client.
In particular, instantiating the transport baffles me. The tutorial at http://thrift.apache.org/tutorial/js/ shows:
function calc() {
var transport = new Thrift.Transport("/thrift/service/tutorial/");
var protocol = new Thrift.Protocol(transport);
var client = new CalculatorClient(protocol);
When I do this, I get an http 404 on "/var/www/thrift/service/tutorial/"
I've found one or two other examples that use
var transport = new Thrift.Transport("/service");
But that gives me a 404 as well.
I've never seen an explanation of what I'm supposed to pass to the constructor of Transport in javascript. In my PHP code, I create a socket and then pass that to the constructor of the Transport. However, javascript complains that Thrift.Socket() isn't a constructor.
The tutorial at http://thrift.apache.org/tutorial/js/ isn't terribly helpful. It says:
The first thing for using the Thrift files is setting up your Transport protocol. At this time, it only supports AJAX and is as follows:
var transport = new Thrift.Transport("/thrift/service/tutorial/");
There's no description of what that path passed to the constructor should be.
I'm lost on this. What do I pass to the Transport constructor in javascript?
Upvotes: 10
Views: 7843
Reputation: 7657
To use a Javascript client you need a HTTP Thrift server (e.g. the one pointed out by yiding). You also need to use TJSONProtocol
.
The files how to make a Thrift Java server work with an Thrift Javascript client are scattered throughout the source. I puzzled them together here: https://github.com/LukeOwncloud/ThriftJavaJavascriptDemo
Upvotes: 2
Reputation: 1740
The above answers have already given enough clarity.
However to make things a bit more clear, assuming that your server is localhost
and its running on port 8080
.
Let your project name be Tutorial_service
and endpoint in your server project be teach_thrift
then you have to pass URL as below
var transport = new Thrift.Transport("http://localhost:8080/Tutorial_service/teach_thrift");
It should keep you going.. :)
Upvotes: 0
Reputation: 2552
I think the answer yiding gave you has identified the problem. I don't have a complete answer, but can give you a few links that may help you get things figured out. If you're writing your server in PHP, this question may help. If you're writing your server in Java, this blog post which links to this sample code may help.
Upvotes: 1
Reputation: 3592
The argument is a URL to a website endpoint that acts as a thrift server using the HTTP processor and JSON protocol. The source code contains a java test server example which can work with such a client.
For your own server, it should be able to act as a webserver, and handle things like CORS for cross-domain requests from your js client.
Upvotes: 1