websocket 在Vercel上部署项目时出现问题

sr4lhrrt  于 8个月前  发布在  其他
关注(0)|答案(1)|浏览(146)

我做了一个项目白板,你在白板上所做的更改会反映给所有用户。当你按下鼠标并移动鼠标时,你会使用www.example.com将其发送到服务器socket.io,然后服务器将其发送给包括你自己在内的所有用户,然后发生更改。当我试图在Vercel上托管这个时,我的后端出现了错误。
处理后端的HTML

<script>
        let socket=io.connect("https://white-board-zeta.vercel.app/");
    </script>
    <script defer src="./tools.js"></script>
    <script src="./canvas.js"></script>
</body>
</html>

后端JS

const express = require("express");
const socket = require("socket.io");
const cors = require("cors");

const app=express();
// app.use(cors()); 
app.use(express.static("./frontend"));

let port = process.env.PORT || 8080;
let server=app.listen(port,()=>{
    console.log("listening to port " + port);
})

let io = socket(server, {
    cors: {
      origin: "*",
      methods: ["GET", "POST"]
    }
});
// let io = socket(server);

io.on("connection",(socket)=>{
    console.log("Made socket connection");
    socket.on("beginpath",(data)=>{
        io.sockets.emit("beginpath",data);
    })
    socket.on("drawstroke",(data)=>{
        io.sockets.emit("drawstroke",data);
    })
    socket.on("performUndoRedo",(data)=>{
        io.sockets.emit("performUndoRedo",data);
    })
})

我尝试了很多方法从youtube,但他们不工作。

zpf6vheq

zpf6vheq1#

答案应该和这篇文章一样你可以根据他们的文档在Vercel上部署一个WebSocket服务器:
https://vercel.com/guides/do-vercel-serverless-functions-support-websocket-connections
Vercel上的无服务器函数是无状态的,并且具有最大执行持续时间。因此,不可能保持与无服务器函数的WebSocket连接。

相关问题