JavaScript客户端中的Thrift传输

10

我正在尝试为我的Thrift服务器构建JavaScript客户端。服务器已经可以运行,使用PHP客户端可以调用服务器。我只是无法弄清楚如何构建JavaScript客户端。

特别是,我不理解如何实例化传输对象。在http://thrift.apache.org/tutorial/js/的教程中有示例:

function calc() {
    var transport = new Thrift.Transport("/thrift/service/tutorial/");
    var protocol  = new Thrift.Protocol(transport);
    var client    = new CalculatorClient(protocol);
当我这样做时,在“/var/www/thrift/service/tutorial/”上会得到http 404错误。 我已经找到了一两个使用的例子。
var transport = new Thrift.Transport("/service");
但它也给我返回了404错误。
我从未看到过有关在JavaScript中传递给Transport构造函数的内容的解释。在我的PHP代码中,我创建了一个套接字,然后将其传递给Transport的构造函数。但是,在JavaScript中,Thrift.Socket()不是一个构造函数,会有报错。
http://thrift.apache.org/tutorial/js/的教程并没有提供太多帮助。它说:

使用Thrift文件的第一步是设置您的传输协议。目前,它只支持AJAX,如下所示:

var transport = new Thrift.Transport("/thrift/service/tutorial/");

对于应该传递给构造函数的路径没有描述。

我有点懵,javascript中传递给Transport构造函数的是什么?

4个回答

2
要使用Javascript客户端,您需要一个HTTP Thrift服务器(例如yiding指出的那个)。您还需要使用TJSONProtocol
如何使Thrift Java服务器与Thrift Javascript客户端配合使用的文件分散在源代码中。我在这里将它们拼凑在一起:https://github.com/LukeOwncloud/ThriftJavaJavascriptDemo

1
参数是一个URL,指向一个使用HTTP处理器和JSON协议作为Thrift服务器的网站端点。源代码包含一个Java测试服务器示例,可以与这样的客户端一起使用。
对于您自己的服务器,它应该能够充当Web服务器,并处理像CORS这样的事情,以便从您的JS客户端进行跨域请求。

1

我认为yiding给你的答案已经确定了问题所在。虽然我没有完整的答案,但是可以给你一些链接,帮助你弄清楚事情。如果你正在用PHP编写服务器,这个问题可能会有所帮助。如果您正在使用Java编写服务器,这篇博客文章可以链接到这个示例代码


0

以上答案已经给出了足够的清晰度。

然而,为了让事情更加清晰,假设您的服务器是 localhost,并且正在端口 8080 上运行。

让您的项目名称为 Tutorial_service,服务器项目中的终端点为 teach_thrift,那么您需要传递以下 URL:

var transport = new Thrift.Transport("http://localhost:8080/Tutorial_service/teach_thrift");

这应该能让你继续前进... :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接