gRPC integration in UE5 - how to use

After spending 2 non fruitful days trying to resolve a conflict between my gRPC generated files needing “libprotobuf”.lib" and UE4.27 webRTC already defining libprotobuf.lib, I decided to migrate to UE5 after some Discord suggestions.

Indeed I can see within UE5 ThirtParty folders that Protobuf has been excluded in its own folder now, as well as gRPC seems to be existing as well here: “\UE_5.0\Engine\Source\ThirdParty\vcpkg”.
Tried installing it as vcpkg instructs, but that vcpkg folder does not include bootstrap bat file, therefore I’m still quite confused on how I could generate my gRPC files from within UE5.

Could anyone shed some light, please?

1 Like

I wrote a plugin for using gRPC in UE 4.27 and UE 5, hope it can help you.
https://github.com/thejinchao/turbolink

4 Likes

I think I found the problem now when looking closer. The hint being your statement “Currently, the async node cannot support gRPC functions of client stream and server stream types.” clearly indicating that if I only have a stream service, there will be no node :slight_smile:

So I guess the bug then is, that if you only have a stream service, no node .h and .cpp files should be generated at all, as the #includes would cause problems when they include a non-existing LiveStreamNode.generated.h

Hi @JinChao ,

I’ve been trying to use your plugin with Unreal, and everything in your instructions worked, but when I generated the code, the *Node.h and *Node.cpp files ended up being empty except for the #include statements. The build fails because there is no .generated.h file for the Node. The other files, such as the Service. and the output from protoc.exe looks to be fine…
Writing to you here first before posting a bug at github to see if you have any idea what it could be about? I don’t see anything sticking out in my proto file really. When generating code for your Greeter example in the same plugin installation I created, the code seem to generate normally.

syntax = "proto3";

package live_stream;

message LiveStreamRequest {
    string content_id = 1;
    string session_id = 2;
}

message LiveStreamFrame {
    int64 timestamp = 1;
    int32 frame_number = 2;
    bytes hepc = 3;
}

service LiveStreamService{
    rpc DownloadLiveStreamFrames(LiveStreamRequest) returns (stream LiveStreamFrame) {};
}

I’ve tried the last line without “{}” as well, without any difference in results. - This is the file as I received it from the server guys…

@Maximilian1107 Sorry for the delay. I have fixed this problem in the new version

1 Like

I try to import your plugin to my project but i m too new in unreal and i even did’t understand your instrudaction. Please help me.