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)
|
||||
if (!server_settings) {
|
||||
console.log('not enough arguments, exit()')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
try {
|
||||
server_settings = JSON.parse(server_settings)
|
||||
} catch (err) {
|
||||
console.log('can not process arguments')
|
||||
console.log('can not process arguments, exit()')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
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 mediasoup = require('mediasoup_prebuilt');
|
||||
const mediasoupSdp = require('mediasoup-sdp-bridge');
|
||||
@@ -25,17 +26,13 @@ function connectSignalling(server) {
|
||||
console.log("Connecting to Signalling Server at %s", server);
|
||||
signalServer = new WebSocket(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("close", result => {
|
||||
console.log(`Disconnected from signalling server: ${result.code} ${result.reason}`);
|
||||
console.log("Attempting reconnect to signalling server...");
|
||||
process.exit()
|
||||
let death_count = 0
|
||||
setTimeout(()=> {
|
||||
connectSignalling(server);
|
||||
if ((++death_count) > 2)
|
||||
process.exit()
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
@@ -87,7 +84,7 @@ function getNextStreamerSCTPId() {
|
||||
}
|
||||
|
||||
function onStreamerDisconnected() {
|
||||
console.log("Streamer disconnected");
|
||||
console.log("Streamer disconnected from SFU");
|
||||
disconnectAllPeers();
|
||||
|
||||
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 app = express();
|
||||
|
||||
const {fork} = require('node:child_process')
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const querystring = require('querystring');
|
||||
@@ -57,30 +56,7 @@ config.HttpPort = server_settings.webrtc_port
|
||||
config.SFUPort = server_settings.sfu_port
|
||||
const session_server_url = server_settings.session_server_url
|
||||
const session_id = server_settings.session_id
|
||||
const useSFU = true
|
||||
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()
|
||||
}
|
||||
const useSFU = true // sfu disabled
|
||||
|
||||
if (config.LogToFile) {
|
||||
logging.RegisterFileLogger('./logs/');
|
||||
@@ -585,8 +561,11 @@ const update_users_count = async () => {
|
||||
session_server_url + '/cirrus/update_users_count',
|
||||
{ json: { session_id: session_id, users_count: playerCount } },
|
||||
function (error, response, body) {
|
||||
if (!error && response.statusCode == 200) {
|
||||
console.log(body);
|
||||
// if (!error && response.statusCode == 200) {
|
||||
// console.log(body);
|
||||
// }
|
||||
if (error) {
|
||||
console.log(error)
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -597,7 +576,7 @@ const update_users_count = async () => {
|
||||
|
||||
const check_players = () => {
|
||||
// update player count on session server
|
||||
update_users_count()
|
||||
//update_users_count()
|
||||
|
||||
|
||||
// if first player connection timeout reached destory session
|
||||
@@ -663,6 +642,7 @@ playerServer.on('connection', function (ws, req) {
|
||||
}
|
||||
|
||||
++playerCount;
|
||||
update_users_count()
|
||||
let playerId = (++nextPlayerId).toString();
|
||||
console.logColor(logging.Green, `player ${playerId} (${req.connection.remoteAddress}) connected`);
|
||||
players.set(playerId, { ws: ws, id: playerId });
|
||||
@@ -731,6 +711,7 @@ playerServer.on('connection', function (ws, req) {
|
||||
function onPlayerDisconnected() {
|
||||
try {
|
||||
--playerCount;
|
||||
update_users_count()
|
||||
const player = players.get(playerId);
|
||||
if (player.datachannel) {
|
||||
// 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 |