java io。grpc。StatusRuntimeException:未实现:未知服务manipula。核心2。果心原型。离心机
我很难用正确的方式编译这个JAVA原型文件,因为到现在为止2天,我先在命令行上尝试并下载了JAVA插件,但只生成了一个文件,然后切换到maven方法,成功了,但还没有完全成功
这是原始文件:
syntax = "proto3";
package manipula.core2.core.proto;
option java_multiple_files = true;
option java_package = "manipula.core2.core.proto";
option java_outer_classname = "centrifugo";
message ClientInfo {
string user = 1;
string client = 2;
bytes conn_info = 3;
bytes chan_info = 4;
}
message Publication {
string uid = 1;
bytes data = 2;
ClientInfo info = 3;
}
message Error {
uint32 code = 1;
string message = 2;
}
enum MethodType {
PUBLISH = 0;
BROADCAST = 1;
UNSUBSCRIBE = 2;
DISCONNECT = 3;
PRESENCE = 4;
PRESENCE_STATS = 5;
HISTORY = 6;
HISTORY_REMOVE = 7;
CHANNELS = 8;
INFO = 9;
}
message Command {
uint32 id = 1;
MethodType method = 2;
bytes params = 3;
}
message Reply {
uint32 id = 1;
Error error = 2;
bytes result = 3;
}
message PublishRequest {
string channel = 1;
bytes data = 2;
}
message PublishResponse {
Error error = 1;
PublishResult result = 2;
}
message PublishResult {}
message BroadcastRequest {
repeated string channels = 1;
bytes data = 2;
}
message BroadcastResponse {
Error error = 1;
BroadcastResult result = 2;
}
message BroadcastResult {}
message UnsubscribeRequest {
string channel = 1;
string user = 2;
}
message UnsubscribeResponse {
Error error = 1;
UnsubscribeResult result = 2;
}
message UnsubscribeResult {}
message DisconnectRequest {
string user = 1;
}
message DisconnectResponse {
Error error = 1;
DisconnectResult result = 2;
}
message DisconnectResult {}
message PresenceRequest {
string channel = 1;
}
message PresenceResponse {
Error error = 1;
PresenceResult result = 2;
}
message PresenceResult {
map<string, ClientInfo> presence = 1;
}
message PresenceStatsRequest {
string channel = 1;
}
message PresenceStatsResponse {
Error error = 1;
PresenceStatsResult result = 2;
}
message PresenceStatsResult {
uint32 num_clients = 1;
uint32 num_users = 2;
}
message HistoryRequest {
string channel = 1;
}
message HistoryResponse {
Error error = 1;
HistoryResult result = 2;
}
message HistoryResult {
repeated Publication publications = 1;
}
message HistoryRemoveRequest {
string channel = 1;
}
message HistoryRemoveResponse {
Error error = 1;
HistoryRemoveResult result = 2;
}
message HistoryRemoveResult {}
message ChannelsRequest {}
message ChannelsResponse {
Error error = 1;
ChannelsResult result = 2;
}
message ChannelsResult {
repeated string channels = 1;
}
message InfoRequest {}
message InfoResponse {
Error error = 1;
InfoResult result = 2;
}
message InfoResult {
repeated NodeResult nodes = 1;
}
message NodeResult {
string uid = 1;
string name = 2;
string version = 3;
uint32 num_clients = 4;
uint32 num_users = 5;
uint32 num_channels = 6;
uint32 uptime = 7;
Metrics metrics = 8;
}
message Metrics {
double interval = 1;
map<string, double> items = 2;
}
service Centrifugo {
rpc Publish (PublishRequest) returns (PublishResponse) {}
rpc Broadcast (BroadcastRequest) returns (BroadcastResponse) {}
rpc Unsubscribe (UnsubscribeRequest) returns (UnsubscribeResponse) {}
rpc Disconnect (DisconnectRequest) returns (DisconnectResponse) {}
rpc Presence (PresenceRequest) returns (PresenceResponse) {}
rpc PresenceStats (PresenceStatsRequest) returns (PresenceStatsResponse) {}
rpc History (HistoryRequest) returns (HistoryResponse) {}
rpc HistoryRemove (HistoryRemoveRequest) returns (HistoryRemoveResponse) {}
rpc Channels (ChannelsRequest) returns (ChannelsResponse) {}
rpc Info (InfoRequest) returns (InfoResponse) {}
}
我的客户:
ManagedChannel channel = ManagedChannelBuilder.forAddress("192.168.99.100", 10000).usePlaintext().build();
CentrifugoGrpc.CentrifugoBlockingStub apiWs = CentrifugoGrpc.newBlockingStub(channel);
ByteString dataToSend = ByteString.copyFromUtf8("message");
PublishRequest request = PublishRequest.newBuilder().setChannel("public:test").setData(dataToSend).build();
try {
PublishResponse pubResp = apiWs.publish(request);
System.out.println("+************************+");
System.out.println(pubResp);
System.out.println("+************************+");
} catch (final Exception e) {
System.out.println(e);
}
服务器是安装在Docker容器上的离心机(用于实时WebSocket)
以下是我从几天以来收到的错误:
io.grpc.StatusRuntimeException: UNIMPLEMENTED: unknown service manipula.core2.core.proto.Centrifugo
我认为问题来自于proto文件的配置:
syntax = "proto3";
package manipula.core2.core.proto;
option java_multiple_files = true;
option java_package = "manipula.core2.core.proto";
option java_outer_classname = "centrifugo";
请问你对这个问题有什么想法,怎么解决?欢迎您的观点
# 1 楼答案
我必须使用与服务器上相同的包名