nodejs+socket.io+zmq 实现实时刷新
来源:互联网 发布:android 涂鸦板 源码 编辑:程序博客网 时间:2024/05/21 18:44
公司前后端分离后,后端采用python+zmq 前端采用nodejs 实时刷新调用zmq数据
首先,安装nodejs
npm install socket.io,zmq 模块
中间服务 zmq-pub.js
var zmq = require('D://Nodejs//node_modules//zeromq');var sock = zmq.socket('sub');var ProtoBuf = require("D://Nodejs//node_modules//protobufjs");var app = require('http').createServer(handler), io = require('D://Nodejs//node_modules//socket.io').listen(app), fs = require('fs');console.log('Subscriber connected to port 10010');sock.connect('tcp://192.168.50.83:10010');sock.subscribe('');//连接事件io.sockets.on('connection', function (socket) { console.log('----------------------------111----------------------'); sock.on('message', function(topic, message) { if(topic.toString('utf-8',0,3)=='tml') { // console.log(topic.toString()); var adr=topic.toString('utf-8',topic.indexOf('w'),topic.lastIndexOf('.')).replace('.','_').replace('.','_'); var adress=adr.charAt(0).toUpperCase()+adr.slice(1); // console.log(adr.charAt(0).toUpperCase(),adress); try{ var Head = ProtoBuf.loadSync("../scripts//zmq-sub.proto").lookupType(adress); var head=Head.decode(message); console.log('received a message related to:', topic.toString(), 'containing message:',head); // console.log('received a message related to:', topic.toString()); socket.emit('onlinenums', {Head : adress,Result:head}); }catch(e){ // console.log('received a message related to:', topic.toString(), 'containing message:',adr); } } });});function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); });}//启动HTTP服务,绑定端口3000app.listen(3000, function(){ console.log('listening on *:3000');});
客户端 index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> 当前在线数:<span style="color: #ff0000;" id="nums"></span></body><script src="scripts/jquery-3.2.1.min.js" type="text/javascript"></script><script type="text/javascript" src="scripts/socket.io.js"></script><script src="js/toServer.js" type="text/javascript"></script><!--PROTOBUF--><script src="scripts/protobuf/jbase64.js" type="text/javascript"></script><script src="scripts/protobuf/base64.js" type="text/javascript" ></script><script src="scripts/protobuf/long.js" type="text/javascript"></script><script src="scripts/protobuf/LongToDate.js" type="text/javascript"></script><script src="scripts/protobuf/ByteBufferAB.min.js" type="text/javascript"></script><script src="scripts/protobuf/long.min.js" type="text/javascript"></script><script src="scripts/protobuf/protobuf.min.js" type="text/javascript"></script><script type="text/javascript"> // 创建websocket连接 var socket = io.connect('http://127.0.0.1:3000'); // 把信息显示到div上 socket.on('onlinenums', function (data) { $("#nums").append(data.Head+'<br/>'+data.Result.ver+'<br/><hr/>'); });</script></html>
执行命令 node zmq-pub.js
结果显示图如下:
阅读全文
0 0
- nodejs+socket.io+zmq 实现实时刷新
- Nodejs实时通讯 在线聊天室(Socket.io)_收藏
- nodejs 使用socket.io与网页实时数据交互
- socket.io 实时通信在nodejs下的应用
- postgres+socket.io+nodejs实时地图应用实践
- postgres+socket.io+nodejs实时地图应用实践
- nodejs 基于socket.io实现聊天室
- nodejs+socket.io实现websocket通信初探
- nodejs+socket.io实现数据推送功能
- nodejs+socket.io实现校内局域网聊天室
- nodejs express+socket.io多线程原始实现
- Socket.io的实时竞拍系统实现
- 利用 socket.io 实现消息实时推送
- NodeJS Socket.io
- NodeJS Socket.io
- NodeJS Socket.io
- NodeJS Socket.io
- nodejs+socket.io.js
- PHP出现 cURL error 60: SSL certificate: unable to get local issuer certificate.的解决办法。
- 普元eos根据查询条件导出excel表格
- hdu 1280 top M
- Java享元模式(Flyweight Pattern)
- SODASODA和怡宝为什么会合作?为您解析市场发展规律
- nodejs+socket.io+zmq 实现实时刷新
- Linux Centos firewall 防火墙 开启 80 端口配置案例
- 1056 最长等差数列 V2
- 63
- android 仿iphoneX上滑退出应用动画(一)
- 详解ThreadPoolExecutor线程池
- 字符编码总结
- Springd的IOC(2)
- JAVA获取txt文件内容