加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang jsonrpc

发布时间:2020-12-16 18:37:01 所属栏目:大数据 来源:网络整理
导读:package mainimport ( "github.com/streadway/amqp" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os" "time")type MPMsg struct {}func (mpMsg *MPMsg) Handle(args *map[string]interface{},reply *map[string]interface{}) error { *reply = map[string]int
package main

import (
    "github.com/streadway/amqp"
    "log"
    "net"
    "net/rpc"
    "net/rpc/jsonrpc"
    "os"
    "time"
)

type MPMsg struct {
}

func (mpMsg *MPMsg) Handle(args *map[string]interface{},reply *map[string]interface{}) error {
    *reply = map[string]interface{}{}
    return nil 
}

func main() {
    lf,_ := os.OpenFile("/var/log/"+time.Now().Format("2006-01-02T15:04:05")+".log",os.O_APPEND|os.O_CREATE|os.O_RDWR,0666)
    defer lf.Close()
    log.SetOutput(lf)

    mpMsg := new(MPMsg)
    rpc.Register(mpMsg)

    addr,_ := net.ResolveTCPAddr("tcp",":135")
    ln,e := net.ListenTCP("tcp",addr)
    if e != nil {
        panic(e)
    }   
    for {
        conn,e := ln.Accept()
        if e != nil {
            continue
        }
        go jsonrpc.ServeConn(conn)
    }   
}



    // RPC calls.
    rpcClient,e := jsonrpc.Dial("tcp","2d1c07f4-8d2d-11e5-bf81-54ee755d5aba:135")
    if e != nil {
        log.Println("Error dail rpc server:",e)
        http.Error(w,e.Error(),http.StatusInternalServerError)
        return
    }   
    var reply map[string]interface{}
    e = rpcClient.Call("MPMsg.Handle",msg,&reply)
    if e != nil {
        log.Println("Error call rpc method:",http.StatusInternalServerError)
        return
    } 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读