我是靠谱客的博主 繁荣钢笔,最近开发中收集的这篇文章主要介绍Golang rpc编码协议替换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

        • 前言
        • 服务端协议替换
        • 客户端协议替换

前言

接下将rpc自带的Gob编码协议替换为json编码协议

服务端协议替换

1.rpc.ServeCodec 支持指定编码协议
2.jsonrpc.NewServerCodec 使用json编码协议
package main

import (
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
)

type Hello struct {
}

func (h *Hello) Talk(request string, response *string) error {
	*response = "hello_" + request
	return nil
}

func main() {
	listen, _ := net.Listen("tcp", ":8083")
	rpc.RegisterName("hello", &Hello{})
	for {
		accept, _ := listen.Accept()
		go func() {
			//rpc.ServeConn(accept)
			/**
			1.rpc.ServeCodec 支持指定编码协议
			2.jsonrpc.NewServerCodec 使用json编码协议
			*/
			rpc.ServeCodec(jsonrpc.NewServerCodec(accept))
		}()
	}
}

客户端协议替换

1.没有使用rpc.Dial 是因为其得到的客户端是基于Gob编码的
2.rpc.NewClientWithCodec 创建指定编码协议的客户端
3.jsonrpc.NewClientCodec 设置json编码协议
package main

import (
	"fmt"
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
)

func main() {
	// 没有使用rpc.Dial 是因为其得到的客户端是基于Gob编码的
	dial, _ := net.Dial("tcp", ":8083")
	/**
	rpc.NewClientWithCodec 创建指定编码协议的客户端
	jsonrpc.NewClientCodec 设置json编码协议
	*/
	client := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(dial))
	var res *string
	client.Call("hello.Talk", "xie", &res)
	fmt.Println(*res) //hello_xie
}

最后

以上就是繁荣钢笔为你收集整理的Golang rpc编码协议替换的全部内容,希望文章能够帮你解决Golang rpc编码协议替换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部