Thanks to visit codestin.com
Credit goes to github.com

Skip to content

OfficialDonut/SkGrpc

Repository files navigation

SkGrpc

Skript addon that adds support for gRPC.

SkriptHubViewTheDocs

Important

SkGrpc depends on SkProtobuf. SkGrpc requires a descriptor set for the RPCs you wish to use with Skript, see SkProtobuf for more information about descriptor sets.

Commands

Command Permission Description
/skgrpc reload skgrpc.admin Reload descriptors.

Examples

See full example files here.

Proto

echo.proto
syntax = "proto3";
message EchoRequest { string message = 1; }
message EchoResponse { string message = 1; }
service EchoService { rpc Echo(EchoRequest) returns (EchoResponse) {} rpc EchoStream(stream EchoRequest) returns (stream EchoResponse) {} }

Client

Create Channel
on load:
    if {channel} is set:
        shutdown grpc channel {channel}
set {_creds} to insecure channel credentials set {channel} to new grpc channel: host: "localhost" port: 60123 credentials: {_creds}
Unary RPC
command /grpcecho <string>:
    trigger:
        # build request
        set {_builder} to new builder for proto "EchoRequest"
        set proto field "message" in {_builder} to arg-1
        set {_request} to proto from builder {_builder}
# send request set {_response} to response of rpc "Echo" for {_request} using {channel} send "Client received response message: %value of proto field "message" in {_response}%"
Bidirectional Streaming
command /grpcechostream <string>:
    trigger:
        # start async rpc
        set {_sender} to command sender
        set {_stream} to request stream for rpc "EchoStream" using {channel}:
            on next:
                set {_message} to value of proto field "message" in event-protobufmessage
                send "Client received response message: %{_message}%" to {_sender}
            on error:
                send "Client received error: %event-grpcstatus's code% - %event-grpcstatus's description%" to {_sender}
            on complete:
                send "Client finished receiving responses." to {_sender}
# send requests loop arg-1 split at " ": set {_builder} to new builder for proto "EchoRequest" set proto field "message" in {_builder} to loop-value send proto from builder {_builder} on rpc stream {_stream}
# tell the server we're done sending requests complete rpc stream {_stream}

Server

Create Server
on load:
    if {server} is set:
        shutdown grpc server {server}
set {_creds} to insecure server credentials set {server} to new grpc server with services "EchoService": port: 60123 credentials: {_creds}
setupEchoHandler({server}) setupEchoStreamHandler({server}) start grpc server {server}
Unary RPC
function setupEchoHandler(server: grpcserver):
    rpc "Echo" handler for {_server}:
        response:
            set {_message} to value of proto field "message" in event-protobufmessage
            broadcast "Server received request message: %{_message}%"
# send response set {_response} to new builder for proto "EchoResponse" set proto field "message" in {_response} to {_message} return rpc response proto from builder {_response}
Bidirectional Streaming
function setupEchoStreamHandler(server: grpcserver):
    rpc "EchoStream" handler for {_server}:
        on connect:
            # store the stream for sending responses
            set {_stream} to event-grpcstream
        on next:
            set {_message} to value of proto field "message" in event-protobufmessage
            broadcast "Server received request message: %{_message}%"
# send response set {_response} to new builder for proto "EchoResponse" set proto field "message" in {_response} to {_message} send proto from builder {_response} on rpc stream {_stream} on error: broadcast "Server received error: %event-grpcstatus's code% - %event-grpcstatus's description%" on complete: broadcast "Server finished receiving requests." # tell the client we're done sending responses complete rpc stream {_stream}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages