服务端通过emqx启动了一个mqtt的服务,通过username、password进行连结。
前端使用mqtt.js库配合连结
经测试,在前端天界username password 连结一切正常。
但现在有个需求是不想在前端暴露username password,那么我的想法是在node端转发,在转发时进行添加,但是无论如何找不到添加的位置,也抓不到前端传递的username password参数,请问如何在node端完成username password参数的添加?
代码如下
mqtt.vue
var socketUrl = "http://"+location.host+ "/mqtt";
console.log('socketUrl == ',socketUrl);
mqttHook.reconnect(socketUrl,{
keepalive: 60,
clientId: `mqtt_client_${Math.random().toString(16).substring(2, 10)}`,
connectTimeout: 4000,
username:'admini',
password:'admini@123'
});
webpack.proxy
const wsProxy = createProxyMiddleware('/mqtt',{
target: 'ws://10.10.2.103:8083',
changeOrigin: true ,
ws:true,
auth:'admini:admini@123',
query:{username:'admini',password:'admini@123'},
on: {
proxyReq: fixRequestBody,
},
onProxyReqWs: ( proxyReq, req, socket, options, head ) => {
}
});
setupMiddlewares : ( middlewares, devServer ) => {
if (! devServer ) {
throw new Error ( 'webpack-dev-server is not defined' );
}
devServer.app.use( express.json());
devServer.app.use( express.urlencoded({ extended: false }));
const server = devServer.app.use(wsProxy);
devServer.app.listen();
server.on('upgrade', wsProxy.upgrade);
return middlewares;
},