问题描述
我有这个 nodejs/express 应用程序,它在 unix 套接字上运行(侦听)。应用程序 websockets 使用单独的端口 8020,它通过 Nginx 升级标头以启用 websocket 连接。一切都按要求工作。
现在,我想捕获一个“升级时”事件,以便稍后检查用户会话并防止未经授权的用户访问 websocket。
但是我的升级事件没有触发,我做错了什么?
// EXPRESS
const express = require('express');
const app = express();
// FILE
const fs = require('fs');
// UNIX
const port = '/home/user/web/mydomain.com/nodeapp/app.sock';
const hostname = 'mydomain.com';
// SSL
var options = {
key: fs.readFileSync('/home/user/conf/web/mydomain.com/ssl/mydomain.com.key'),cert: fs.readFileSync('/home/user/conf/web/mydomain.com/ssl/mydomain.com.pem')
};
// SERVER
const https = require('https');
const server = https.Server(options,app);
// Server(options,app);
// WS
const WebSocket = require('ws');
const wss = new WebSocket.Server({ noServer : true,port: 8020 });
// PATH
var path = require('path');
const froot = path.join(__dirname,'../public_html/');
// SITES
app.get('/',async function (req,res) {
// let wss = req.app.wss;
res.sendFile(froot+'index.html');
});
// WS
wss.on('connection',function connection(ws,request,client) {
console.log('user connected');
ws.on('close',function close() {
console.log('disconnected');
});
});
// WS AUTH
server.on('upgrade',function upgrade(request,socket,head) {
console.log('upgrade happened!');
});
// SERVER START
server.listen(port,hostname,() => {
console.log(`Example app listening at https://localhost:${port}`);
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)