gpt4 book ai didi

node.js - 使用express初始化ws服务器

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:55 26 4
gpt4 key购买 nike

我一直在努力寻找以下代码中的错误根源:

const express = require("express");
const path = require("path");
const WebSocket = require("ws");
const SocketServer = WebSocket.Server;

const PORT = process.env.PORT || 3000; // port to listen on

const INDEX = path.join(__dirname, "index.html"); // index address

var server = express();

server.use((req, res) => res.sendFile(INDEX));
server.listen(PORT, () => console.log(`Listening on port ${ PORT }`));

const wss = new SocketServer({server}); // wss = web socket server

(我下面有用于连接等的代码,我认为与这个问题无关)

运行此命令后,我在浏览器中收到来自客户端的以下错误:

与“ws://localhost:3000/”的 WebSocket 连接失败:连接在收到握手响应之前关闭

令我困惑的是,如果我进行以下更改,代码就会起作用:

var server = express()
.use((req, res) => res.sendFile(INDEX));
.listen(PORT, () => console.log(`Listening on port ${ PORT }`));

此方法的问题在于,无法在现有 .use 之前添加另一个 .use,而这是访问静态文件所必需的(即 javascript 作为其自己的文件而不是 HTML 文件)

为什么在这两个示例之间更改我的代码会破坏它?我该如何解决这个问题?

谢谢

最佳答案

您需要将http.createServer实例传递给WebsocketServer。不是 express 实例

var app = express();
var server = http.createServer(app);

关于node.js - 使用express初始化ws服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56686047/

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