admin管理员组

文章数量:1122961

php7 zeromq,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接收

本文标签: php7 zeromqZeroMQ