【发布时间】:2021-12-03 11:13:57
【问题描述】:
我一直在为此寻找高低,但未能找到解决方案。我在服务器中有以下代码:
import express from 'express';
import { createServer } from 'https';
import { Server } from "socket.io";
import fs from 'fs';
const app = express();
const credentials = {
key: fs.readFileSync('../key.pem'),
cert: fs.readFileSync('../cert.pem')
};
// create http/https server
const server = createServer(credentials, app);
const io = new Server(server);
io.on('connection', (socket) => {
console.log('a user connected');
});
server.listen(3000, () => {
console.log('listening on localhost:3000');
});
现在在客户端我有:
import { io } from "socket.io-client";
import fs from "fs";
const socket = io("https://localhost:3000", {
rejectUnauthorized: false,
ca: fs.readFileSync("../cert.pem")
});
socket.on("connect", () => console.log("connected to server"));
如果我更改要导入的服务器端:
import { createServer } from 'http';
代替:
import { createServer } from 'https';
我将客户端更改为:
const socket = io("http://localhost:3000");
代替:
const socket = io("https://localhost:3000");
我的socket io可以正常通信
这只是https。我尝试添加证书并设置
rejectUnauthorized: false
无济于事。我找到了this 问题,但没有任何效果。 socket io 文档并没有太大帮助。接下来我可以尝试什么?
【问题讨论】:
-
您应该启用调试日志,以便了解 SSL 不起作用的原因。
-
@Pilpo 我如何在 nodejs 中做到这一点?
-
也许这会有所帮助:stackoverflow.com/a/21651419/5734311
标签: javascript node.js websocket socket.io