node.js - websocket 连接到 'wss://url_from_aws_domain/socket.io/?EIO=4&transport=websocket' 失败?
问题描述
我已经在本地使用 socket.io( https://cdnjs.com/libraries/socket.io )实现了实时通知,它工作正常。但是当我尝试在部署在 AWS 域的实时服务器上实现它时,与服务器建立套接字连接的前端出现错误,websocket 无法连接服务器并抛出错误:
websocket 连接到 'wss://url_from_aws_server/socket.io/?EIO=4&transport=websocket' 失败?
前端(通知发送方)
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.min.js"></script>
<script>
var socket = io('https://app.url_from_aws_server.com:4492', { transports: ['websocket', 'polling', 'flashsocket'] });
$(document).on("click",'#confirmSlot',function(){
socket.emit("notify_platform", {
"shop": locationName,
"therapist": therapistName,
"date": therapistDate,
"time": therapistTime,
});
}
</script>
服务器端
const express = require('express');
const app = express();
...
const sslOptions = {
key: fs.readFileSync(path.join(__dirname, '../ssl/key.pem')),
cert: fs.readFileSync(path.join(__dirname, '../ssl/cert.pem')),
requestCert: false,
rejectUnauthorized: false,
};
const https = require('https').createServer(sslOptions, app);
const io = require('socket.io')(https, {
cors: {
origin: 'https://app.url_from_aws_server.com:4492',
methods: ['GET', 'POST'],
},
});
...
https.listen(process.env.SSL_PORT, () => {
console.log(
`HTTPS Server started at ${process.env.SSL_PORT}, Database - ${process.env.MONGODB_URI}`
);
io.on('connection', function(socket){
console.log('Auth value:' + socket.id);
socket.on('notify_platform', function(details){
socket.broadcast.emit('notify_platform', details);
})
})
});
解决方案
推荐阅读
- components - 上层实体期待“输入”引脚,而下层实体正在使用“输出”引脚
- python - 如何在 docsify.js 上使用深色主题、翻译和搜索?
- angular - Angular/angularfire2 - 读取可观察的文档并将数据保存到对象。没有异步管道
- php - 电子邮件在本地主机和服务器上发送,但邮件未到达服务器
- python - Python:构建一种有效的算法来从任何网页中抓取项目
- php - 卷曲 OpenSSL 错误 141A318A tls_process_ske_dhe:dh 密钥太小
- react-native - 什么时候需要编写 Redux Persist Migration
- ldap - Atlassian(Jira、Confluence)LDAP 配置
- python - SyntaxError:使用带有 Selenium 和 Python 的 xpath 时出现无效语法错误
- amazon-web-services - 使用 S3DistCp 覆盖 S3 中的现有文件