我为 websocket 类型的项目创建了一个节点应用程序。我的本地机器没有问题,一切正常,例如连接,发送和接收但是当上传到服务器时,客户端根本没有连接,它返回
<块引用>WebSocket 在连接建立之前关闭。
下面是我的服务器代码
require('dotenv').config();
const path = require('path');
const fs = require('fs');
const options = {
key: fs.readFileSync(path.join(__dirname,'../'+process.env.SSL_KEY)),
cert: fs.readFileSync(path.join(__dirname,'../'+process.env.SSL_CRT)),
ca: process.env.SSL_CA
};
const http = require('https').createServer(options);
const io = require('socket.io')(http,{
cors : {
origin : '*'
}
});
// middleware
io.use((socket, next) => {
let token = socket.handshake.query.token;
if( token == process.env.TOKEN ){
return next();
}
return next(new Error('authentication error'));
});
http.listen(3800, () => {
console.log('listening on *:3700');
});
下面是客户端
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.0.4/socket.io.js" integrity="sha512-aMGMvNYu8Ue4G+fHa359jcPb1u+ytAF+P2SCb+PxrjCdO3n3ZTxJ30zuH39rimUggmTwmh2u7wvQsDTHESnmfQ==" crossorigin="anonymous"></script>
<script>
var socket = io('mydomain.com:3800?token=myapp2021',{
transports : ['websocket'],
secure : true
});
socket.on('connect', function() {
console.log( socket.connected );
});
</script>
非常感谢任何帮助、想法、建议。
答案 0 :(得分:0)
您是否允许服务器上端口 3800 上的传入 TCP 连接?好像防火墙阻止了连接。