;jondfgsk
This commit is contained in:
parent
9d86d10a85
commit
9bdc7933a8
@ -1,5 +1,5 @@
|
|||||||
import { Server as WebSocketServer } from "ws";
|
import { Server as WebSocketServer } from "ws";
|
||||||
import { WebSocket, Payload, } from "@fosscord/gateway";
|
import { WebSocket, Payload, CLOSECODES } from "@fosscord/gateway";
|
||||||
import { Config, initDatabase } from "@fosscord/util";
|
import { Config, initDatabase } from "@fosscord/util";
|
||||||
import OPCodeHandlers from "./opcodes";
|
import OPCodeHandlers from "./opcodes";
|
||||||
import { setHeartbeat } from "./util";
|
import { setHeartbeat } from "./util";
|
||||||
@ -28,8 +28,10 @@ export class Server {
|
|||||||
|
|
||||||
if (OPCodeHandlers[payload.op])
|
if (OPCodeHandlers[payload.op])
|
||||||
await OPCodeHandlers[payload.op].call(this, socket, payload);
|
await OPCodeHandlers[payload.op].call(this, socket, payload);
|
||||||
else
|
else {
|
||||||
console.error(`Unimplemented`, payload);
|
console.error(`Unimplemented`, payload);
|
||||||
|
socket.close(CLOSECODES.Unknown_opcode);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -46,7 +48,7 @@ export class Server {
|
|||||||
async createWorkers(): Promise<void> {
|
async createWorkers(): Promise<void> {
|
||||||
const numWorkers = 1;
|
const numWorkers = 1;
|
||||||
for (let i = 0; i < numWorkers; i++) {
|
for (let i = 0; i < numWorkers; i++) {
|
||||||
const worker = await mediasoup.createWorker();
|
const worker = await mediasoup.createWorker({ logLevel: "debug" });
|
||||||
if (!worker) return;
|
if (!worker) return;
|
||||||
|
|
||||||
worker.on("died", () => {
|
worker.on("died", () => {
|
||||||
@ -91,17 +93,6 @@ export class Server {
|
|||||||
clockRate: 48000,
|
clockRate: 48000,
|
||||||
channels: 2
|
channels: 2
|
||||||
},
|
},
|
||||||
{
|
|
||||||
kind: "video",
|
|
||||||
mimeType: "video/H264",
|
|
||||||
clockRate: 90000,
|
|
||||||
parameters:
|
|
||||||
{
|
|
||||||
"packetization-mode": 1,
|
|
||||||
"profile-level-id": "42e01f",
|
|
||||||
"level-asymmetry-allowed": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ import { Server } from "../Server";
|
|||||||
|
|
||||||
export async function onIdentify(this: Server, socket: WebSocket, data: Payload) {
|
export async function onIdentify(this: Server, socket: WebSocket, data: Payload) {
|
||||||
var transport = await this.mediasoupRouters[0].createWebRtcTransport({
|
var transport = await this.mediasoupRouters[0].createWebRtcTransport({
|
||||||
listenIps: [{ ip: "127.0.0.1" }],
|
listenIps: [{ ip: "0.0.0.0", announcedIp: "127.0.0.1" }],
|
||||||
enableUdp: true,
|
enableUdp: true,
|
||||||
enableTcp: true,
|
enableTcp: true,
|
||||||
preferUdp: true,
|
preferUdp: true,
|
||||||
@ -40,10 +40,9 @@ export async function onIdentify(this: Server, socket: WebSocket, data: Payload)
|
|||||||
socket.send(JSON.stringify({
|
socket.send(JSON.stringify({
|
||||||
op: VoiceOPCodes.READY,
|
op: VoiceOPCodes.READY,
|
||||||
d: {
|
d: {
|
||||||
|
streams: [],
|
||||||
ssrc: 1,
|
ssrc: 1,
|
||||||
ip: "127.0.0.1",
|
ip: transport.iceCandidates[0].ip,
|
||||||
|
|
||||||
//@ts-ignore
|
|
||||||
port: transport.iceCandidates[0].port,
|
port: transport.iceCandidates[0].port,
|
||||||
modes: [
|
modes: [
|
||||||
"aead_aes256_gcm_rtpsize",
|
"aead_aes256_gcm_rtpsize",
|
||||||
|
@ -68,6 +68,8 @@ import * as sdpTransform from 'sdp-transform';
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var test_hasMadeProducer = false;
|
||||||
|
|
||||||
export async function onSelectProtocol(this: Server, socket: WebSocket, data: Payload) {
|
export async function onSelectProtocol(this: Server, socket: WebSocket, data: Payload) {
|
||||||
const rtpCapabilities = this.mediasoupRouters[0].rtpCapabilities;
|
const rtpCapabilities = this.mediasoupRouters[0].rtpCapabilities;
|
||||||
const codecs = rtpCapabilities.codecs as RtpCodecCapability[];
|
const codecs = rtpCapabilities.codecs as RtpCodecCapability[];
|
||||||
@ -85,23 +87,33 @@ export async function onSelectProtocol(this: Server, socket: WebSocket, data: Pa
|
|||||||
})),
|
})),
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const producer = await transport.produce({
|
if (!test_hasMadeProducer) {
|
||||||
kind: "audio",
|
const producer = await transport.produce({
|
||||||
rtpParameters: {
|
kind: "audio",
|
||||||
mid: "audio",
|
rtpParameters: {
|
||||||
codecs: [{
|
mid: "audio",
|
||||||
clockRate: 48000,
|
codecs: [{
|
||||||
payloadType: 111,
|
clockRate: 48000,
|
||||||
mimeType: "audio/opus",
|
payloadType: 111,
|
||||||
channels: 2,
|
mimeType: "audio/opus",
|
||||||
}],
|
channels: 2,
|
||||||
headerExtensions: res.ext?.map(x => ({
|
}],
|
||||||
id: x.value,
|
headerExtensions: res.ext?.map(x => ({
|
||||||
uri: x.uri,
|
id: x.value,
|
||||||
}))
|
uri: x.uri,
|
||||||
},
|
}))
|
||||||
paused: false,
|
},
|
||||||
});
|
paused: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const consumer = await transport.consume({
|
||||||
|
producerId: producer.id,
|
||||||
|
paused: false,
|
||||||
|
rtpCapabilities,
|
||||||
|
})
|
||||||
|
|
||||||
|
test_hasMadeProducer = true;
|
||||||
|
}
|
||||||
|
|
||||||
socket.send(JSON.stringify({
|
socket.send(JSON.stringify({
|
||||||
op: VoiceOPCodes.SESSION_DESCRIPTION,
|
op: VoiceOPCodes.SESSION_DESCRIPTION,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user