0

我的网络摄像头工作正常,所以当我不使用快速生成器应用程序时,我可以看到我的脸。但是,在我安装了 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 时的代码相同。

4

0 回答 0