返回顶部
首页 > 资讯 > 后端开发 > GO >php-golang-jsonrpc2.0 rpc-codec/jsonrpc2和tivoka/tivoka实践
  • 953
分享到

php-golang-jsonrpc2.0 rpc-codec/jsonrpc2和tivoka/tivoka实践

phpgolang开发语言 2023-09-06 18:09:13 953人浏览 八月长安
摘要

golang代码: package main import (     "context"     "net"     "net/rpc"     "GitHub.com/powerman/rpc-codec/JSONrpc2" )

golang代码:

package main

import (

    "context"

    "net"

    "net/rpc"

    "GitHub.com/powerman/rpc-codec/JSONrpc2"

)

type App struct{}

type Res struct {

    Code int    `json:"code"`

    Msg  string `json:"msg"`

    Data any    `json:"data"`

}

func (*App) Hi(mp map[string]any, res *Res) error {

    res.Code = 200

    res.Msg = "成功"

    var rmp = make(map[string]any, 0)

    if v, ok := mp["name"].(string); ok {

        rmp["name"] = "my name is " + v

    } else {

        rmp["name"] = "my name is unknown"

    }

    res.Data = rmp

    return nil

}

type exampleContexTKEy string

var RemoteAddrContextKey exampleContextKey = "RemoteAddr"

func main() {

    rpc.ReGISter(&App{})

    //Server provide a tcp transport.

    lnTCP, err := net.Listen("tcp", "127.0.0.1:6001")

    if err != nil {

        panic(err)

    }

    defer lnTCP.Close()

    for {

        conn, err := lnTCP.Accept()

        if err != nil {

            return

        }

        ctx := context.WithValue(context.Background(), RemoteAddrContextKey, conn.RemoteAddr())

        Go jsonrpc2.ServeConnContext(ctx, conn)

    }

}

PHP代码:

composer require tivoka/tivoka

php
namespace app\index\controller;

use app\BaseController;
use think\facade\View;
use Tivoka\Client;

class Index extends BaseController
{
    public function index()
    {
        
        //tcp
        $connection = Client::connect(array('host' => '127.0.0.1', 'port' => 6001));
        $connection->useSpec('2.0');
        $request = $connection->sendRequest('App.Hi', ['name'=>'ceshi222']);
        dd($request->result);

      }

}

 

来源地址:https://blog.csdn.net/qq_32421489/article/details/131959503

您可能感兴趣的文档:

--结束END--

本文标题: php-golang-jsonrpc2.0 rpc-codec/jsonrpc2和tivoka/tivoka实践

本文链接: https://lsjlt.com/news/397376.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作