vue中使用node.js根据返回数据同时监听多端口
下载安装node.js
下载官网: nodejs官网.选择对应的版本进行下载安装即可,完成后输入node -v可检测版本。
新建http/index.js
连接函数
var nodeprot = []; //对象数组
const http = window.require('http');
import store from '@/store'
let httpprot = 8040;//设置端口号从8040以后开始
function connect(wsobj, name) {
let prot = JSON.parse(JSON.stringify(httpprot += 1))
nodeprot[wsobj] = http.createServer(function (req, res) {
res.writeHead(200, {
//指定响应头中Content-Type字段值,值为响应内容类型,指定字符编码以免乱码 防止跨域
'Content-Type': 'text/html;charset=utf8', "access-control-allow-origin": "*"
});
if (req.url != "/favicon.ico") {
req.on('data', function (data) {
store.commit('SET_WS_MSG', data);//将信息存储到vuex中
})
req.on('end', function () {
console.log('端口' + prot + "客户端请求的数据已全部接收完毕。");
})
}
res.end('这是端口' + prot);
}).listen(prot, () => {
console.log(`服务器已启动,监听${prot}端口,wx账号:${name}`)
const details = {prot,name}
arrList.push(details)
store.commit('SET_CONNECT_PROT', arrList);//将监听端口存储到vuex中
});
//如果当前端口号被占用,端口号+1
nodeprot[wsobj].on('error', function (e) {
if (e.code === "EADDRINUSE") {
prot += 1
connect(wsobj, name)
}
});
}
创建多个连接
function StartConn(data) {
//这里创建循环连接
for (var i = 0; i < data.length; i++) {
connect(i, data[i].wx_name); //创建连接
}
}
导出函数
export { StartConn }
vue页面引用
import { StartConn } from "../http/index";
getAccount() {
let { user_id, token } = this.userInfo;
ClientListWxList({
user_id: user_id,
token: token,
url: "accoun_api/ClientListWxList"
}).then(res => {
if (res.status != 0) {
console.log(res.msg);
} else {
this.list = res.data;
StartConn(this.list);
}
});
}
效果