簡體   English   中英

io.grpc.StatusRuntimeException:未實現:未知服務 manipula.core2.core.proto.Centrifugo

[英]io.grpc.StatusRuntimeException: UNIMPLEMENTED: unknown service manipula.core2.core.proto.Centrifugo

我很難以正確的方式為 JAVA 編譯這個 proto 文件,因為現在最多 2 天,我首先嘗試在命令行上下載 java 的插件,但只生成一個文件,然后切換到 Z401405D9AFEE61070 方法成功但不完全!

這是原型文件:

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 容器上的 Centrifugo(用於實時 websockets)。

這是我幾天以來收到的錯誤:

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";

請對這個問題有任何想法以及如何解決它? 歡迎您的觀點!

我必須使用與服務器上相同的 package 名稱。

package api;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM