-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
[QUESTION] 请问咱们 GRPC 客户端在 swoole 4.5 下可用吗? node 的客户端测试正常,但咱们客户端报 No Response #2183
Copy link
Copy link
Closed
Labels
questionFurther information is requestedFurther information is requested
Description
Before you submit this issue, you has been search all existed issues and search the documentation
- I've been search all existed issues
- I've been read all documentation
Describe your question
不知道是否和 #1421 有关?
proto 文件
syntax = "proto3";
package cti;
message AgentCmdRequest {
string jsonRequest = 1;
}
message AgentCmdReply {
string jsonReply = 1;
}
service Cti {
rpc AgentCmd ( AgentCmdRequest) returns ( AgentCmdReply) {}
}mac 下使用 protoc 生成代码后
/**
* @RequestMapping(path="fuck", methods={"POST"})
*/
public function call(): array
{
(new CtiGrpc('172.25.1.124:5027', ['credentials' => null]))->fuck('{"action":15,"fuck":"6690170531783684096"}');
return $this->success();
}client 客户端
<?php
declare(strict_types=1);
namespace App\Util\Grpc;
use App\Util\Logger;
use Cti\AgentCmdReply;
use Cti\AgentCmdRequest;
class CtiGrpc extends AbstractClient
{
public function fuck(string $data)
{
$arg = (new AgentCmdRequest())->setJsonRequest($data);
$response = $this->_simpleRequest('/cti.Cti/AgentCmd', $arg, [AgentCmdReply::class, 'decode']);
Logger::info('response', $response);
return $response;
}
}最后,请求 fuck,没有一次成功的,每次都是报
[2020-07-25 20:35:53 *17013.1] NOTICE http2 stream#1 belongs to an unknown type or it never registered
[2020-07-25T20:35:56.557711+08:00] app.INFO: response {"0":"No response","1":-1,"2":false}目前,看了相关源码,暂未找到问题,没有头绪,所以请教下
感谢
ps:服务端是 c 写的,附 nodejs 客户端源码
var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
var PROTO_PATH = 'cti.proto';
var arguments = process.argv.splice(2);
var srv_addr="127.0.0.1:5027";
var message;
if(arguments.length < 1){
console.log("parms too low!");
help();
process.exit(0);
}else if(arguments.length == 1){
message = arguments[0];
}else{
srv_addr = arguments[0];
message = arguments[1];
}
var packageDefinition = protoLoader.loadSync(
PROTO_PATH, {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
});
var cti_proto = grpc.loadPackageDefinition(packageDefinition).cti;
// 指定地址和端口号
var client = new cti_proto.Cti(srv_addr, grpc.credentials.createInsecure());
console.log("grpc host["+srv_addr+"] message["+message+"] start...");
client.AgentCmd({
jsonRequest: message
}, function(err, response) {
if (err !== null) {
console.log("grpc error:"+err);
process.exit(0);
}
console.log('Greeting:', response);
process.exit(0);
});执行 node g-client.js '{"action":15,"fuck":"6690170531783684096"}' 后,是可以正常返回的
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested