# gorpc **Repository Path**: tjrpc/gorpc ## Basic Information - **Project Name**: gorpc - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-22 - **Last Updated**: 2025-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoRPC GoRPC是一个基于WebSocket的RPC(远程过程调用)框架,用于在网络上不同系统间进行通信和方法调用。这是Go语言版本的实现,参考了原始C++项目的设计。 ## 特性 - 基于WebSocket的长连接通信 - 支持同步和异步RPC调用 - 支持请求-响应模式和通知模式 - 支持数据压缩(GZIP) - 多线程处理请求 - 完整的会话管理 - 简单易用的接口 ## 安装 ```bash go get github.com/yourusername/gorpc ``` ## 项目结构 ``` gorpc/ ├── client/ # 客户端实现 ├── server/ # 服务端实现 ├── protocol/ # 协议定义 ├── internal/ # 内部实现 └── examples/ # 示例代码 ├── client/ # 客户端示例 └── server/ # 服务端示例 ``` ## 使用示例 ### 服务端 ```go package main import ( "github.com/yourusername/gorpc/internal" "github.com/yourusername/gorpc/server" ) // 实现RPC回调接口 type MyCallback struct{} func (c *MyCallback) OnConnect(session internal.Session) { // 处理连接建立 } func (c *MyCallback) OnClose(session internal.Session, code int, reason string) { // 处理连接关闭 } func (c *MyCallback) OnRequest(session internal.Session, method string, data []byte) ([]byte, error) { // 处理请求 // 根据method分发到不同的处理函数 return []byte("response"), nil } func (c *MyCallback) OnNotify(session internal.Session, method string, data []byte) { // 处理通知 } func main() { // 创建RPC服务器 rpcServer := server.NewRPCServer() // 设置回调 rpcServer.SetCallback(&MyCallback{}) // 启动服务器 rpcServer.Start(":8080", 4) // 等待中断信号 // ... // 关闭服务器 rpcServer.Stop() } ``` ### 客户端 ```go package main import ( "context" "github.com/yourusername/gorpc/client" ) func main() { // 创建RPC客户端 rpcClient := client.NewRPCClient() // 连接到服务器 rpcClient.Connect("ws://localhost:8080", nil) // 调用远程方法 ctx := context.Background() response, err := rpcClient.CallMethod(ctx, "myMethod", []byte("request data")) // 发送通知 rpcClient.Notify("myNotification", []byte("notification data")) // 关闭连接 rpcClient.Close() } ``` ## 运行示例 ### 服务端示例 ```bash cd examples/server go run main.go ``` ### 客户端示例 ```bash cd examples/client go run main.go ``` ## 许可证 MIT License