使用nodejs和python构建一个远程监控系统3.web模块的编写

使用nodejs和python构建一个远程监控系统1.视频采集模块

使用nodejs和python构建一个远程监控系统2.主控程序编写

nodejs搭建的web模块主要负责接收视频信息,转发视频信息,唯一复杂的地方在于要记录每一个与服务器建立了连接的客户端,将图像发送给相应的每个客户端,这里我使用了一个全局对象构造的连接池,请看代码

//加载配置文件
var config = require("./config");
//引入http模块
var httpServer = require("http");
//引入UDP模块
var dgram = require("dgram");
var net = require('net');
//引入path模块
var path = require('path');
//引入express模块
var express = require('express');
//引入express模块
var app = express();
var http = httpServer.Server(app);
//初始化socket连接
var io = require("socket.io")(http);
var serverSocket = dgram.createSocket("udp4");
serverSocket.bind(config.udpImagePort);
//初始化连接池
var connections = {};
var connectionid = new Set();
//初始化全局变量
var isWarning = true;
app.use(express.static(path.join(__dirname, 'public')));
app.set("views",path.join(__dirname,"views"));
app.set("view engine","html");
app.engine(".html",require("ejs").__express);
app.get("/",function(req,res){
	res.render("camera.html");
})
//监听websocket连接
console.info("开始websocket监听...")
io.on("connection",function(socket){
	//监听到连接时,将socket加入连接池中
	socket.send("连接成功");
	connections[socket.id] = socket;
	connectionid.add(socket.id);
	console.info("增加一个连接,当前连接数量为"+connectionid.size)
	//获得来自网页的视频设置信息
	//断开连接时,将连接从连接池中删除
	socket.on("disconnect",function(){
		delete connections[socket.id];
		connectionid.delete(socket.id);
		console.info("删除一个连接,当前连接数量为"+connectionid.size);
	});
})
//监听udp连接,如果有画面,将画面广播出去
serverSocket.on("message",function(msg,info){
	for(var a of connectionid){
		connections[a].send(msg);
	}
});

//开启应用
http.listen(config.listenPort,function(socket){
	console.info("listening on "+config.listenPort);
});

html页面非常简单,只有一个canvas用于显示图像




    
       
    
    
        
你的浏览器暂不支持Canvas,请更换浏览器后再试

分别启动nodejs服务器和视频采集主控程序(不分先后),效果如下

使用nodejs和python构建一个远程监控系统3.web模块的编写_第1张图片

一个简单的视频监控程序就搭建起来了,这里是完整的项目,接下来我会给这个系统添加以下功能

1.外网穿透(需要公网服务器)

2.入侵检测报警

3.通过舵机控制摄像头

3.远程控制截图,录制视频等

你可能感兴趣的:(项目)