【webrtc0419 server.js源码】

阅读 115

2022-05-04

通过WebRtc搭建了自己的网站,实现了如下功能:

相应源码可点击相应功能查看。
附上server.js源码,任何一个功能都要搭配server.js使用才能实现。

"use strict"

var http = require("http")
var https = require("https")
var fs = require("fs")
var express = require("express")
var serverIndex = require("serve-index")
var log4js = require("log4js")
var socketIo = require("socket.io")
var sqlite3 = require("sqlite3") ;
var logger = log4js.getLogger()
logger.level = "info";
var app = express();
app.use(serverIndex("./www"));
app.use(express.static("./www"));
var httpServer = http.createServer(app)
    .listen(8888,"0.0.0.0");
var options = {
    key:fs.readFileSync("./cert/ssl_server.key"),
    cert:fs.readFileSync("./cert/ssl_server.pem")
};
var httpsServer = https.createServer(options, app)
    .listen(443, "0.0.0.0");
var io = socketIo.listen(httpsServer);
io.sockets.on("connection", (socket)=>{
    logger.info("connect:"+socket.id);
    //监听各种信号
    socket.on("login",(uname, pwd)=>{
        db.all("select id from users where name = ? and pwd = ?",
            [uname, pwd], (e, rows)=>{
                if (e) {
                    logger.info(e);
                    socket.emit("servererr"); //告诉客户端服务出错err
                } else {
                    if (rows.length === 1) {
                        socket.emit("loginsuc", uname);
                    } else {
                        socket.emit("loginerr");
                    }

                }

            });
    });
    socket.on("regist", (uname, pwd)=>{
        db.all("select id from users where name = ?",
            uname, (e,rows)=>{
                if (e) {
                    logger.info(e);
                    socket.emit("servererr");
                } else {
                    if (rows.length === 1) {
                        socket.emit("samename");
                    } else {
                        //插入
                        db.run("insert into users(name, pwd) values(?,?)",
                            [uname, pwd], (e)=>{
                                if (e) {
                                    logger.info(e);
                                    socket.emit("servererr");//服务器背锅
                                } else {
                                    socket.emit("registok", uname);
                                }
                            });
                    }
                }
            });
    });
    socket.on("cjoin", (room, uname)=>{
        logger.info("cjoin:", room, uname);
        socket.join(room);
        var myRoom = io.sockets.adapter.rooms[room];
        var users = Object.keys(myRoom.sockets).length;
        logger.info("房间中有:"+users+"人");
        socket.emit("cjoinsuc", room, users);
        socket.to(room).emit("cotherjoined", room, uname, users);
    });
    socket.on("cexit", (room, uname)=>{
        var myRoom = io.sockets.adapter.rooms[room];
        var users = Object.keys(myRoom.sockets).length - 1;
        socket.leave(room);
        socket.emit("cexited");
        socket.to(room).emit("cotherexited", uname, users);
    });
    socket.on("cmsg", (room, uname, msg)=>{
        io.in(room).emit("cgetmsg", uname, msg);
    });
    socket.on("vjoin",(room, uname)=>{
        logger.info("vjoin", room, uname);
        socket.join(room);
        var myRoom = io.sockets.adapter.rooms[room];
        var users = Object.keys(myRoom.sockets).length;
        if (users > 2) {
            socket.leave(room);
            socket.emit("vfull", room);
        } else {
            socket.emit("vjoined", room);
            if (users > 1) {
                socket.to(room).emit("votherjoined", room, uname);
            }
            if (users < 1) {
                socket.to(room).emit("votherjoined", uname);
            }
        }
    });
    socket.on("vleave", (room, uname)=>{
        try{
            var myRoom = io.sockets.adapter.rooms[room];
            var users = Object.keys(myRoom.sockets).length - 1;
        } catch (e) {
            logger.info(e);
            return;
        }
        socket.leave(room);
        logger.info("vleave users = " + users);
        socket.emit("vleaved", room);
        socket.to(room).emit("votherleaved", room, uname);

    });
    socket.on("vdata", (room, data)=>{
        socket.to(room).emit("vgetdata", room, data);
        logger.info("vdata", room, data);
    });
});
//数据库操作
//创建数据库
var db = null;
var sql = "";
db = new sqlite3.Database("app.db",(e)=>{
    if(e)
        logger.info(e);
    else
        logger.info("SUC");
});
//建表
//db.run("create table if not exists");
db.run("create table if not exists users(id integer primary key autoincrement, "
    +"name char(50) unique, pwd char(200))",(e)=>{
    if(e)
        logger.info(e);
    else
        logger.info("create table successfully");
});
//插入数据
// sql = "insert into users(name, pwd) values('gyf','123')";
// db.exec(sql,(e)=>{
//     if(e)
//         logger.info(e);
//     else
//         logger.info("insert users into successfully");
// })
//查询
//sql = "select * from users";
sql = "select id, name, pwd from users";
db.all(sql, (e, rows)=>{
    if(e)
        logger.info(e);
    else {
        logger.info(rows);
        logger.info(rows[0]);
        logger.info(rows[1]);
        logger.info(rows[1]["id"]);
        logger.info(rows[1]["name"]);
        logger.info(rows[1]["pwd"]);
    }

})

精彩评论(0)

0 0 举报