golang jsonrpc

nowboy11427 · · 4425 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
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:", e)
        http.Error(w, e.Error(), http.StatusInternalServerError)
        return
    } 


本文来自:CSDN博客

感谢作者:nowboy11427

查看原文:golang jsonrpc

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

4425 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传