Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript旧客户端挂起_Javascript_Thrift - Fatal编程技术网

javascript旧客户端挂起

javascript旧客户端挂起,javascript,thrift,Javascript,Thrift,我有以下javascript格式的Thrift客户端代码: <script language="javascript" type="text/javascript" src="thrift.js" /> <script language="javascript" type="text/javascript" src="QuantSvc_types.js" /> <script language="javascript" type="text/javascript"

我有以下javascript格式的Thrift客户端代码:

<script language="javascript" type="text/javascript" src="thrift.js" />
<script language="javascript" type="text/javascript" src="QuantSvc_types.js" />
<script language="javascript" type="text/javascript" src="QuantSvc.js" />
<script language="javascript" type="text/javascript">
function calc() {   
    var transport = new Thrift.Transport("http://localhost:9997/QuantSvc/");   
    var protocol  = new Thrift.Protocol(transport);
    var client    = new QuantSvcClient(protocol);

    try {
        result = client.ListAllVariables()   
    } catch(ouch) {     
        alert("An exception occurred!")   
    } 
} 
</script>
QuantSvcHandler的ListAllVariables函数的位置(基本上是一个骨架函数,只是试图让事情正常工作):

我在ListAllVariables的第一行以及QuantSvcHandler处理器中的几个地方放置了一个断点。我在intellij IDEA的调试中运行服务器,在Chrome中打开我的HTML页面,然后按下按钮(调用javascript calc()函数的按钮)。按钮一直被卡住,我在服务器上看不到任何响应,断点没有被击中


知道我做错了什么吗?

您将HTTP客户端与套接字服务器混合使用

尽管HTTP使用套接字,但Thrift HTTP传输与Thrift套接字传输不兼容您需要在两端设置完全相同的协议/传输堆栈。该规则的唯一例外是,某些服务器传输隐式地要求在客户端增加一个框架传输层


因此,解决方案是使用HTTP服务器。根据您使用的版本,您可能还必须切换到JSON协议。

谢谢。仅供参考:在javascript客户端文档页面中,它作为先决条件说:“本教程依赖于现有的Thrift服务器。有关如何构建和设置其中一台服务器,请参阅Java教程或node.js教程。”。然后按照链接,查看java服务器是如何设置的,它使用了SocketServer。
object Application extends App {
    val handler = new QuantSvcHandler()
    val processor = new QuantSvc.Processor(handler)
    val serverTransport = new TServerSocket(9997)
    val server = new TThreadPoolServer(new TThreadPoolServer.Args(serverTransport).processor(processor))    
}
override def ListAllVariables(): util.List[Attributes] =
{
  var input = scala.collection.mutable.Buffer[Attributes]()

  input
}