Zeromq

近期在做STF的二次开发(其实也算不上,只是添加一些小功能)

STF使用zeromq进行消息的传递.zeromq几乎支持所有的开发语言(这里可以查看示例)

STF是基于nodejs开发的,使用的zeromq开发包是zmq

push/pull

单向通讯:push负责发送消息,pull负责接收消息,在回调中处理消息;
服务端给客户端发送消息: push作为服务端,pull作为客户端
客户端给服务端发送消息: pull作为服务端,push作为客户端
push.send(msg)
pull.on(‘message’, callback)
多个Client(pull)同时连接Server(push)时:
比如:Client1,Client2,Client3,Client4按顺序分别连接上Server后
Server发送的第1个消息由Client1接收
Server发送的第2个消息由Client2接收
Server发送的第3个消息由Client3接收
Server发送的第4个消息由Client4接收
Server发送的第5个消息由Client1接收

push.js

var zmq = require('zmq');
var sock = zmq.socket('push');

sock.bindSync('tcp://127.0.0.1:3000');
console.log('Publisher bound to port 3000');

var count = 1 
setInterval(function() {
    // console.log('sending a multipart message envelop');
    sock.send(['kitty cats', 'meow!' + count++]);
}, 500);

pull.js

var zmq = require('zmq');
var sock = zmq.socket('pull');

sock.connect('tcp://127.0.0.1:3000');
console.log('Connected to port 3000');

sock.on('message', function(topic, message) {
  console.log('received a message related to:', topic.toString(), 'containing message:', message.toString());
});

pub/sub

单向通讯:pub负责发布消息,sub负责订阅消息(只会收到订阅的消息)
服务端给客户端发送消息: pub作为服务端,sub作为客户端
客户端给服务端发送消息: sub作为服务端,pub作为客户端
pub.send(msg)
sub.subscribe(title)
sub.on(‘message’, callback)
有多个sub时,pub发送的title消息,每个sub都可以收到,sub不会接收非title消息

dealer/dealer

双向通讯:服务端可以给客户端发消息,客户端也可以给服务端发消息
dealer.send(msg)
dealer.on(‘message’, callback)
多个Client同时连接Server时:
比如:Client1,Client2,Client3,Client4按顺序分别连接上Server后
Server发送的第1个消息由Client1接收
Server发送的第2个消息由Client2接收
Server发送的第3个消息由Client3接收
Server发送的第4个消息由Client4接收
Server发送的第5个消息由Client1接收
 

 

 

转载于:https://my.oschina.net/lhplj/blog/897752

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值