我的网络摄像头工作正常,所以当我不使用快速生成器应用程序时,我可以看到我的脸。但是,在我安装了 express 生成器并编写了相同的代码之后,却看不到我的脸。我认为该脚本在“index.ejs”中不起作用。
1. bin/www 附加
app.io.attach(server);
2.app.js 追加
app.io = require("socket.io")();
app.io.on("connection", function (socket) {
console.log("a user connected");
socket.broadcast.emit("hi");
socket.on("disconnect", function () {
console.log("user disconnected");
});
});
3. index.js 追加
const cv = require("opencv4nodejs");
var express = require("express");
const server = require("http").Server(app);
const io = require("socket.io")(server);
const FPS = 30;
const wCap = new cv.VideoCapture(0);
wCap.set(cv.CAP_PROP_FRAME_WIDTH, 300);
wCap.set(cv.CAP_PROP_FRAME_HEIGHT, 300);
setInterval(() => {
const frame = wCap.read();
const image = cv.imencode(".jpg", frame).toString("base64");
io.emit("image", image);
}, 1000 / FPS);
4. index.ejs
附加
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
hello somin
<img id="image" style="width: 300; height: 300" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js">.
</script>
<script>
const socket = io.connection("/");
socket.on("image", (image) => {
const imageElm = document.getElementById("image");
imageElm.src = `data:image/jpeg;base64,${image}`;
});
</script>
</body>
</html>
我可以在 app.js socket.io 连接中看到 console.log 消息,但我认为 index.ejs io.connection() 不起作用。我无法理解代码与我不使用 express-generator 时的代码相同。