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

这篇具有很好参考价值的文章主要介绍了php-golang-jsonrpc2.0 rpc-codec/jsonrpc2和tivoka/tivoka实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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);

      }

}

php-golang-jsonrpc2.0 rpc-codec/jsonrpc2和tivoka/tivoka实践,php,golang,开发语言

 文章来源地址https://www.toymoban.com/news/detail-611818.html

到了这里,关于php-golang-jsonrpc2.0 rpc-codec/jsonrpc2和tivoka/tivoka实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go微服务: 基于net/rpc/jsonrpc模块实现微服务跨语言调用

    概述 Golang 提供 net/rpc/jsonrpc 库来实现rpc方法 采用 json 方式进行数据编解码,支持跨语言调用 这里实现跨语言示例 1 ) go 服务端 2 ) nodejs 客户端1 3 ) nodejs 客户端2 4 ) go 客户端3 总结 这里演示了,基于go语言为服务端,nodejs 和 golang 为客户端的3种示范 注意,上面 nodejs版本

    2024年03月17日
    浏览(43)
  • golang实现rpc方法一:使用net/rpc库【不能跨平台】

    使用golang官方的net/rpc库实现RPC方法,使用http作为RPC的载体,通过http/net包监听客户端连接请求。 rpc服务端实现代码serverrpc.go如下 上述服务端程序运行之后,将会监听本地的8090端口,我们可以实现一个客户端程序,连接服务端并且实现RPC方法调用。 rpc客户端实现代码clientr

    2024年01月17日
    浏览(59)
  • golang网络编程学习-1rpc

    网络编程主要的内容是: 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务   RPC 框架----- 远程过程调用协议RPC(Remote Procedure Call Protocol)-----允许像调用本地服务一样调用远程服务。 RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上

    2024年02月16日
    浏览(49)
  • Golang 实现一个简单的 RPC 服务

    分享一个简单的 rpc 服务框架 一、服务端实现 二、客户端实现

    2024年04月10日
    浏览(45)
  • 开源 Golang 微服务入门二:RPC 框架 Kitex

    前一篇笔记介绍了字节跳动的开源 Golang 微服务 HTTP 框架 Hertz, 如下: 开源 Golang 微服务入门一: HTTP 框架 Hertz 本文将要介绍同样是字节跳动开源的 Golang 微服务 RPC 框架 Kitex。 Kitex 简介 Kitex 字节跳动内部的 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点,在字节内部

    2024年02月09日
    浏览(44)
  • 2023最新版uni-push2.0推送开发php调用

    使用 uni-push 2.0,服务端不支持用个推 api 推送,只能用 dcloud 提供的 服务端(云函数)推送。这就意味着网上很多集成个推sdk的形式已经不使用了。 文档详细记录了unipush2.0配置到最后云函数url化调用的全过程。 需要HBuilderX 3.5.1 及其以上版本支持 unipush基本介绍:https://www.

    2024年02月01日
    浏览(109)
  • 从php5.6到golang1.19-文库App性能跃迁之路

    作者 | 百度文库App 导读 本文深入浅出地分享了百度文库App服务端技术栈从PHP迁移至Go的实战经验,包含了技术选型、基础建设、流量迁移的具体方案,以及核心项目案例的重构实践。 全文6209字,预计阅读时间16分钟。 长期以来,百度文库App服务端采用 PHP 作为主要开发语言

    2024年02月12日
    浏览(39)
  • ARM Codec要求

    本文主要整理了关于codec IP的一些要求。 1.1 porting guide 1.2 programing guide 1.3 CPU占用率统计 1.4 memory使用统计(不包含input/output/working buffer) 2.1 porting guide,驱动所支持freeRTOS版本列表 2.2 programing guide 2.3 CPU占用率统计 2.4 codec size统计,需要提供text/bss/data段统计结果 2.5 memory使用统计

    2024年02月09日
    浏览(31)
  • NVIDIA Video Codec SDK简介

          NVIDIA的Video Codec SDK提供API对视频进行加速编解码 。最新发布版本为12.0,支持Windows和Linux平台。可从 https://developer.nvidia.com/video-codec-sdk-archive 下载。用于视频解码(NVDEC)和编码(NVENC)的GPU硬件加速器引擎比实时视频处理速度更快,非常适合用于转码应用以及视频播放应用。

    2024年02月16日
    浏览(33)
  • Linux音频问题——codec寄存器配置

    起初,在1992年推出了OSS框架,用于在Unix操作系统中处理音频信号。直至于1998年Gravis Ultrasound所开发的ALSA驱动,ALSA此时一直作为一个单独的软件包开发,LINUX内核一直使用的OSS框架。直到2002年开始,Linux内核2.5版本引进,2.6版本成为Linux内核中默认的标准音频驱动程序集,O

    2024年01月20日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包