Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514076
  • 博文数量: 239
  • 博客积分: 60
  • 博客等级: 民兵
  • 技术积分: 1044
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-22 18:25
文章分类

全部博文(239)

文章存档

2019年(9)

2018年(64)

2017年(2)

2016年(26)

2015年(30)

2014年(41)

2013年(65)

2012年(2)

分类: 架构设计与优化

2018-08-09 19:37:09

下载bson-lua到本地https://github.com/tcoram/bson-lua
参考:http://zeromq.org/bindings:lua
sudo apt-get install lua
sudo apt-get install luarocks
sudo luarocks install lzmq
sudo luarocks install lua-llthreads2

1)实现rep_bson.lua

点击(此处)折叠或打开

  1. --require "zhelpers"
  2. local zmq = require "lzmq" -- 获取zmq的安装包
  3. local bson = require "bson" -- get bson package
  4. local context = zmq.context() -- 创建一个ZMQ 上下文 ,
  5. local publisher, err = context:socket{zmq.REP, bind = "tcp://*:5025"} -- 调用套接字 服务端将套接字绑定在端口5025
  6. --zassert(publisher, err) -- 开始等待响应 发出应答 如此循环

  7. -- 客户端是发送请求 并等待服务端的应答
  8. epoch = os.time({year=1970, month=1, day=1, hour=0})
  9. bsondoc = bson.encode{username="maroc",
  10.          info={first="todd",
  11.              last="coram",
  12.              age=46,
  13.              signature1=bson.binary("\000\001\002\003",bson.B_GENERIC),
  14.              signature2=bson.binary("\000\001\002\003"),
  15.              saved=true,
  16.              now=bson.utc_datetime(),
  17.              past=bson.utc_datetime(epoch * 1000),
  18.              colors={"Red","Green","Blue"}
  19.          }}

  20. local y = 0
  21. while y>=0 do
  22.     --local x = "This is a zmq test!"
  23.     local x = bsondoc
  24.     y = y + 1
  25.     --local ret = zassert(publisher:recv())
  26.     local ret = publisher:recv()
  27.     print(y.."rep recv"..ret)
  28. -- sleep(1)
  29.     publisher:send(bsondoc)
  30.     --zassert(publisher:send(x))
  31.     -- print(y..":"..x)
  32. end



2)实现req_bson.lua

点击(此处)折叠或打开

  1. --require "zhelpers"
  2. local zmq = require "lzmq"
  3. local bson = require "bson" -- get bson package
  4. local context = zmq.context();
  5. local requester,err = context:socket{zmq.REQ,connect = "tcp://localhost:5025"}


  6. function print_table(t)
  7.     function printTableHelper(t, spacing)
  8.         for k,v in pairs(t) do
  9.      print(spacing..tostring(k), v)
  10.      if type(v) == "table" then
  11.      printTableHelper(v, spacing.."\t")
  12.      end
  13.     end
  14.     end
  15.     printTableHelper(t, "");
  16. end


  17. --zassert(requester,err)
  18. for i = 1,10 do
  19.     -- print("hello world")
  20.     --zassert(requester:send("hello"));
  21.     requester:send("hello")
  22.     local ret = requester:recv()
  23.     luatab, doc = bson.decode(ret)
  24.     print("req recv==="..ret)
  25.     print(doc)
  26.     print_table(bson.decode(ret))
  27.     --print(luatab)
  28.     --print_table(luatab)
  29.     print()
  30. end



3)运行:
#lua5.1 rep_bson.lua
#lua5.1 req_bson.lua
阅读(1218) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~