我做了一个项目白板,你在白板上所做的更改会反映给所有用户。当你按下鼠标并移动鼠标时,你会使用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,但他们不工作。
1条答案
按热度按时间zpf6vheq1#
答案应该和这篇文章一样你可以根据他们的文档在Vercel上部署一个WebSocket服务器:
https://vercel.com/guides/do-vercel-serverless-functions-support-websocket-connections
Vercel上的无服务器函数是无状态的,并且具有最大执行持续时间。因此,不可能保持与无服务器函数的WebSocket连接。