gpt4 book ai didi

javascript - nodejs、socket、https - Socket 没有连接但只是断开连接

转载 作者:行者123 更新时间:2023-12-03 11:52:42 25 4
gpt4 key购买 nike

我在这里遇到了很多关于这个主题的问题,但到目前为止还没有答案可以解决我的问题。
我的设置是安装了 apache 的 AWS EC2 服务器。我已经在 /node 中安装了 node.js包含名为 server.js 的服务器文件的文件夹在根文件夹中,我有我的客户端文件 index.php .我为我的域加密了 SSL 证书,因此我需要通过 https 运行所有内容。我已经为 AWS 上的所有流量打开了端口 3000。
Server.js

const app = require('express')();
const fs = require('fs');

const options = {
key: fs.readFileSync("/etc/letsencrypt/live/example.com/privkey.pem"),
cert: fs.readFileSync("/etc/letsencrypt/live/example.com/fullchain.pem")
};

const http = require('https').Server(options, app);
const io = require('socket.io')(http);


io.on('connection', (socket) => {
socket.on('chat message', (msg) => {
console.log('message: ' + msg);
});
});

http.listen(3000, function(){
console.log('listening on 3000');
});

index.php
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Socket Test</title>
</head>
<body>
<ul id="events"></ul>

<script src="https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/socket.io.js"></script>
<script>
const events = document.getElementById('events');

const newItem = (content) => {
const item = document.createElement('li');
item.innerText = content;
return item;
};

const socket = io('https://example.com:3000', {transports: ['websocket', 'polling']});

console.log(socket);

socket.on('connect', () => {
console.log("did connect");
events.appendChild(newItem('connect'));
});

socket.on('disconnect', () => {
console.log("did disconnect");
});
</script>
</body>
</html>

问题
当我启动我的 Node 服务器时,一切似乎都正确。正在执行 node server.js返回 listening on 3000像假设的那样。当我去 index.php 时,它永远不会返回 did connect但是当我退出服务器 Node 时,我得到了 did disconnect浏览器控制台中的消息。
此外,服务器除了 listening on 3000 之外从不返回任何其他内容。 .
请帮我 :-)

最佳答案

由于最近更新到 v3.0.0,版本 2.x.x 客户端不兼容,因此将无法连接。
修复方法是确保客户端和服务器使用相同的版本,或者使用服务器提供的版本 /socket.io/socket.io.js (这并不总是可能的,webpack 等)
github上的相关问题:https://github.com/socketio/socket.io-client/issues/1390

关于javascript - nodejs、socket、https - Socket 没有连接但只是断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64728832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com