weixin_45907466 2023-10-14 11:08 采纳率: 57.1%
浏览 6

express websocket的问题


const express = require("express");
const morgan = require("morgan");
const cors = require("cors");
const https = require("https");
const fs = require("fs");
const expressWs = require("express-ws");
const app = express();
expressWs(app);
const bodyParser = require("body-parser");

const router = require("./router/index");

app.use(express.static("images"));
app.use(bodyParser.json({ limit: "10mb" }));
// app.use(morgan("dev"));
app.use(express.json());
app.use(express.urlencoded());

app.use(cors());

const PORT = process.env.PORT || 7778;

app.use("/api", router);

var privateCrt = fs.readFileSync(
  "./config/cert/**************.pem",
  "utf8"
);
var privateKey = fs.readFileSync(
  "./config/cert/************.key",
  "utf8"
);


const options = {
  key: privateKey,
  cert: privateCrt,
};

app.ws('/', function(ws, req) {
    ws.on('message', function(msg) {
      console.log(msg);
    });
    console.log('socket', req.testing);
  });

const server = https.createServer(options, app)

server.listen(PORT, () => {
    console.log(`server is runing at https://localhost:${PORT}`);
  });
  


求问为什么以上的代码无法使用wss://localhost:7778/进行访问。
我在尝试将ssl证书去掉之后就可以使用ws://localhost:7778/进行访问就是正常的

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-14 14:05
    关注

    【以下回答由 GPT 生成】

    问题分析: 根据代码看来,使用的是express框架搭建的一个https服务器,并且使用了express-ws中间件添加了WebSocket的支持。通过wss://localhost:7778/访问时,出现了问题,但是去掉SSL证书后使用ws://localhost:7778/可以正常访问。根据描述,可以推测可能是SSL证书配置有误导致的问题。

    解决方案: 1. 首先需要确认SSL证书的配置正确性,确保证书的路径和文件名都正确。根据代码,可以看到证书文件的路径为"./config/cert/**.pem"和"./config/cert/**.key"。 2. 确认证书文件的读取方式是否正确,可以尝试使用console.log输出privateCrt和privateKey的值,确认文件是否读取成功。 3. 检查证书文件的格式是否正确,证书文件应该是PEM格式的,可以使用文本编辑器打开证书文件,确保文件内容与实际的证书文件一致。 4. 检查证书的有效期,确认证书是否已过期,可以使用openssl命令检查证书的有效期,如 openssl x509 -in **.pem -noout -dates。 5. 如果以上步骤都没有问题,可以尝试重新生成新的证书文件,并重新配置证书。

    如果确认以上步骤都正确,但仍然无法使用wss://localhost:7778/访问,则可能有其他问题导致。在此情况下,可能需要进一步调试和分析代码,查看是否有其他地方导致WebSocket无法正常工作。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 修改了问题 10月14日
  • 创建了问题 10月14日