51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
//
|
|
// Created by Mingliang Chen on 17/8/1.
|
|
// illuspas[a]gmail.com
|
|
// Copyright (c) 2018 Nodemedia. All rights reserved.
|
|
//
|
|
// const Logger = require('./node_core_logger');
|
|
|
|
const Net = require('net');
|
|
const NodeRtmpSession = require('./node_rtmp_session');
|
|
const NodeCoreUtils = require('./node_core_utils');
|
|
|
|
const context = require('./node_core_ctx');
|
|
|
|
const RTMP_PORT = 1935;
|
|
|
|
class NodeRtmpServer {
|
|
constructor(config) {
|
|
config.rtmp.port = this.port = config.rtmp.port ? config.rtmp.port : RTMP_PORT;
|
|
this.tcpServer = Net.createServer((socket) => {
|
|
let session = new NodeRtmpSession(config, socket);
|
|
session.run();
|
|
})
|
|
}
|
|
|
|
run() {
|
|
this.tcpServer.listen(this.port, () => {
|
|
// Logger.log(`Node Media Rtmp Server started on port: ${this.port}`);
|
|
});
|
|
|
|
this.tcpServer.on('error', (e) => {
|
|
// Logger.error(`Node Media Rtmp Server ${e}`);
|
|
});
|
|
|
|
this.tcpServer.on('close', () => {
|
|
// Logger.log('Node Media Rtmp Server Close.');
|
|
});
|
|
}
|
|
|
|
stop() {
|
|
this.tcpServer.close();
|
|
context.sessions.forEach((session, id) => {
|
|
if (session instanceof NodeRtmpSession) {
|
|
session.socket.destroy();
|
|
context.sessions.delete(id);
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
module.exports = NodeRtmpServer
|