Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c882119d75 | |||
| d3260522f4 | |||
| a0a4ca1cc0 | |||
| 70c0cb90bb | |||
| 343365dc3b | |||
| 32a278fc93 | |||
| 53f6c8aacf | |||
| b4ddd2b4b6 | |||
| 33f8ee42bc | |||
| f04683e21e |
@@ -1,17 +1,18 @@
|
|||||||
var server_settings = process.argv.slice(2)
|
var server_settings = process.argv.slice(2)
|
||||||
if (!server_settings) {
|
if (!server_settings) {
|
||||||
|
console.log('not enough arguments, exit()')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
server_settings = JSON.parse(server_settings)
|
server_settings = JSON.parse(server_settings)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('can not process arguments')
|
console.log('can not process arguments, exit()')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
const config = require('./config');
|
const config = require('./config');
|
||||||
config.signallingURL = 'ws://localhost:' + server_settings.sfu_port
|
config.signallingURL = 'ws://127.0.0.1:' + server_settings.sfu_port
|
||||||
const WebSocket = require('ws');
|
const WebSocket = require('ws');
|
||||||
const mediasoup = require('mediasoup_prebuilt');
|
const mediasoup = require('mediasoup_prebuilt');
|
||||||
const mediasoupSdp = require('mediasoup-sdp-bridge');
|
const mediasoupSdp = require('mediasoup-sdp-bridge');
|
||||||
@@ -25,17 +26,13 @@ function connectSignalling(server) {
|
|||||||
console.log("Connecting to Signalling Server at %s", server);
|
console.log("Connecting to Signalling Server at %s", server);
|
||||||
signalServer = new WebSocket(server);
|
signalServer = new WebSocket(server);
|
||||||
signalServer.addEventListener("open", _ => { console.log(`Connected to signalling server`); });
|
signalServer.addEventListener("open", _ => { console.log(`Connected to signalling server`); });
|
||||||
signalServer.addEventListener("error", result => { console.log(`Error: ${result.message}`); process.exit()});
|
signalServer.addEventListener("error", result => { console.log(`Error: ${result.message}`); });
|
||||||
signalServer.addEventListener("message", result => onSignallingMessage(result.data));
|
signalServer.addEventListener("message", result => onSignallingMessage(result.data));
|
||||||
signalServer.addEventListener("close", result => {
|
signalServer.addEventListener("close", result => {
|
||||||
console.log(`Disconnected from signalling server: ${result.code} ${result.reason}`);
|
console.log(`Disconnected from signalling server: ${result.code} ${result.reason}`);
|
||||||
console.log("Attempting reconnect to signalling server...");
|
console.log("Attempting reconnect to signalling server...");
|
||||||
process.exit()
|
|
||||||
let death_count = 0
|
|
||||||
setTimeout(()=> {
|
setTimeout(()=> {
|
||||||
connectSignalling(server);
|
connectSignalling(server);
|
||||||
if ((++death_count) > 2)
|
|
||||||
process.exit()
|
|
||||||
}, 2000);
|
}, 2000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -87,7 +84,7 @@ function getNextStreamerSCTPId() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onStreamerDisconnected() {
|
function onStreamerDisconnected() {
|
||||||
console.log("Streamer disconnected");
|
console.log("Streamer disconnected from SFU");
|
||||||
disconnectAllPeers();
|
disconnectAllPeers();
|
||||||
|
|
||||||
if (streamer != null) {
|
if (streamer != null) {
|
||||||
|
Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 241 B |
|
Before Width: | Height: | Size: 155 B After Width: | Height: | Size: 155 B |
@@ -16,7 +16,6 @@ try {
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var app = express();
|
var app = express();
|
||||||
|
|
||||||
const {fork} = require('node:child_process')
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const querystring = require('querystring');
|
const querystring = require('querystring');
|
||||||
@@ -57,30 +56,7 @@ config.HttpPort = server_settings.webrtc_port
|
|||||||
config.SFUPort = server_settings.sfu_port
|
config.SFUPort = server_settings.sfu_port
|
||||||
const session_server_url = server_settings.session_server_url
|
const session_server_url = server_settings.session_server_url
|
||||||
const session_id = server_settings.session_id
|
const session_id = server_settings.session_id
|
||||||
const useSFU = true
|
const useSFU = true // sfu disabled
|
||||||
console.log('useSFU: ', useSFU)
|
|
||||||
|
|
||||||
function runSFU() {
|
|
||||||
const sfu_file_path = __dirname + '/../SFU/sfu_server.js'
|
|
||||||
if (!fs.existsSync(sfu_file_path)) {
|
|
||||||
console.logColor(logging.Red, 'can not run sfu: sfu file not exists!')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
var sfu_proc_args = JSON.stringify({sfu_port:config.SFUPort})
|
|
||||||
fork(sfu_file_path, [sfu_proc_args], {
|
|
||||||
detached: true
|
|
||||||
})
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err)
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (useSFU) {
|
|
||||||
runSFU()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.LogToFile) {
|
if (config.LogToFile) {
|
||||||
logging.RegisterFileLogger('./logs/');
|
logging.RegisterFileLogger('./logs/');
|
||||||
@@ -585,8 +561,11 @@ const update_users_count = async () => {
|
|||||||
session_server_url + '/cirrus/update_users_count',
|
session_server_url + '/cirrus/update_users_count',
|
||||||
{ json: { session_id: session_id, users_count: playerCount } },
|
{ json: { session_id: session_id, users_count: playerCount } },
|
||||||
function (error, response, body) {
|
function (error, response, body) {
|
||||||
if (!error && response.statusCode == 200) {
|
// if (!error && response.statusCode == 200) {
|
||||||
console.log(body);
|
// console.log(body);
|
||||||
|
// }
|
||||||
|
if (error) {
|
||||||
|
console.log(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -597,7 +576,7 @@ const update_users_count = async () => {
|
|||||||
|
|
||||||
const check_players = () => {
|
const check_players = () => {
|
||||||
// update player count on session server
|
// update player count on session server
|
||||||
update_users_count()
|
//update_users_count()
|
||||||
|
|
||||||
|
|
||||||
// if first player connection timeout reached destory session
|
// if first player connection timeout reached destory session
|
||||||
@@ -663,6 +642,7 @@ playerServer.on('connection', function (ws, req) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
++playerCount;
|
++playerCount;
|
||||||
|
update_users_count()
|
||||||
let playerId = (++nextPlayerId).toString();
|
let playerId = (++nextPlayerId).toString();
|
||||||
console.logColor(logging.Green, `player ${playerId} (${req.connection.remoteAddress}) connected`);
|
console.logColor(logging.Green, `player ${playerId} (${req.connection.remoteAddress}) connected`);
|
||||||
players.set(playerId, { ws: ws, id: playerId });
|
players.set(playerId, { ws: ws, id: playerId });
|
||||||
@@ -731,6 +711,7 @@ playerServer.on('connection', function (ws, req) {
|
|||||||
function onPlayerDisconnected() {
|
function onPlayerDisconnected() {
|
||||||
try {
|
try {
|
||||||
--playerCount;
|
--playerCount;
|
||||||
|
update_users_count()
|
||||||
const player = players.get(playerId);
|
const player = players.get(playerId);
|
||||||
if (player.datachannel) {
|
if (player.datachannel) {
|
||||||
// have to notify the streamer that the datachannel can be closed
|
// have to notify the streamer that the datachannel can be closed
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 959 B After Width: | Height: | Size: 959 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |