;jondfgsk

This commit is contained in:
Madeline 2022-02-04 18:46:09 +11:00
parent 9d86d10a85
commit 9bdc7933a8
3 changed files with 37 additions and 35 deletions

View File

@ -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
}
}
] ]
}); });

View File

@ -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",

View File

@ -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,