thrift+nodejs 服务端必须是非阻塞的吗
1个回答
2017-11-06
展开全部
1、阻塞模式TThreadPoolServer
从源码中很容易发现,该代码采用的是JDK中java.net.ServerSocket作为服务端套接字。
因此,很容易辅助理解其为什么为阻塞模式。
服务端的示例代码如下:
TServerSocketserverTran= newTServerSocket(18000);//负责服务端套接字的管理
Hello.Processor<Iface>pro= newProcessor<Iface>(newHelloImpl());
Factoryfactory= newTBinaryProtocol.Factory(true,true);
Argsargs= newArgs(serverTran);
args.processor(pro);
args.protocolFactory(factory);
TServerserver= newTThreadPoolServer(args);
server.serve();// 启动Server
TServer 源码中启动代码如下:
server.serve();// 其源码如下:
publicvoid serve() {
try{
serverTransport_.listen();//这里调用的是TServerSocket的listen()方法,监听是否存在新的client申请
}catch(TTransportException ttx) {
LOGGER.error("Error occurred during listening.",ttx);
return;
}
...
}
从源码中很容易发现,该代码采用的是JDK中java.net.ServerSocket作为服务端套接字。
因此,很容易辅助理解其为什么为阻塞模式。
服务端的示例代码如下:
TServerSocketserverTran= newTServerSocket(18000);//负责服务端套接字的管理
Hello.Processor<Iface>pro= newProcessor<Iface>(newHelloImpl());
Factoryfactory= newTBinaryProtocol.Factory(true,true);
Argsargs= newArgs(serverTran);
args.processor(pro);
args.protocolFactory(factory);
TServerserver= newTThreadPoolServer(args);
server.serve();// 启动Server
TServer 源码中启动代码如下:
server.serve();// 其源码如下:
publicvoid serve() {
try{
serverTransport_.listen();//这里调用的是TServerSocket的listen()方法,监听是否存在新的client申请
}catch(TTransportException ttx) {
LOGGER.error("Error occurred during listening.",ttx);
return;
}
...
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询