nodejs socket.io的使用

目录结构

服务端server.js 

var express = require('express')
var expressWs = require('express-ws')
var fs= require('fs')
var path = require('path'); //系统路径模块
//http协议,ws模块无法被浏览器直接访问
var app = express()
expressWs(app)
app.ws('/echo', (ws, req) => {
    ws.on('connection', function (connection) {
        //...
    })
    ws.on('close', function () {
        //...
    })
})
//在public下  这个是挂载静态文件
app.use(express.static('public'))

//这里是读取我的index.html吧 这个可以不用
app.get('/',function(req,res)
{
res.sendfile("./public/index.html"); //sendfile没用过 应该是返回文件
})
app.listen(3000, function () {
    console.log('Example app listening on port 3000!')
})
var http = require('http').Server(app);
var io = require('socket.io')(http);
//当有完整连接时触发connection函数
let oc = io.on('connection', function (socket) {
        return socket
});
//这里的obj就是我sendData里的message数据
//sendDataquery区块链查询
exports.sendDataquery=function(obj){
    oc.emit('dataquery', obj) 
}
//这里添加
exports.sendDataadd=function(obj){
    oc.emit('dataadd', obj)
}
//定义访问端口为8088
http.listen(8088, function () {
});

客户端index.html

<!DOCTYPE html>
<html lang="en">
<head> 
<meta charset="UTF-8"> 
<title>nodejs socket.io</title>
</head>
<body>
<script type="text/javascript" src="http://127.0.0.1:8088/socket.io/socket.io.js"></script>
<script type="text/javascript">
    window.conn = io.connect('ws://127.0.0.1:8088')
	//查询接口返回值到页面
    conn.on('dataquery', function (dataquery) {
       console.log(dataquery)
    })
	//添加接口返回值到页面
    conn.on('dataadd', function (dataadd) { //这样对应的
       console.log(dataadd)
    })
</script>
</body>
</html>

在nodejs 接口中使用

//数据查询接口
router.post('/blockchain/querylist', function(req, res) {
    arr = [];
    var array='';
    var codeid;//标识
    console.info('===================进入最新10条数据查询===================');
     addMysql.queryMysqltenlist(req, res).then( async function(message){
            //通过numid查询链码库最新数据条数
            console.info('数据长度===' +message.length);
            //将message返回值转为JSON数据格式
            array=JSON.stringify(message)
            //查询数据
            for(var i=0;i<message.length;i++){
                array=message[i];
                console.info('数据参数===' +array);
                //根据数据的id上链查询
                var options = paramMgr.getUserEnv(req);
                options.args = [  array  ];
                options.fcn = 'query';
                //链码查询,使用await同步,先for循环,后send
                let list = await  queryasync.queryChaincodeasync(options);
                arr.push(list);
            }
            //调用socket.io,将值转换为JSON格式数据
            socket.sendDataquery(JSON.stringify(arr))
            //send给前端的数据
            res.send(arr);
        }
    )
})

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值