@webrtc2/client
Version:
WebRTC2 Client - React Native, Web & Electron WebRTC hooks and components for cross-platform real-time video calls, audio communication, and screen sharing
81 lines (75 loc) • 1.93 kB
JavaScript
// src/components/AudioCall.tsx
function AudioCall() {
return null;
}
// src/components/ScreenShare.tsx
function ScreenShare() {
return null;
}
// src/components/VideoCall.tsx
function VideoCall() {
return null;
}
// src/hooks/useWebRTC.ts
import { useCallback, useState } from "react";
function useWebRTC() {
const [localStream, setLocalStream] = useState(null);
const [remoteStream, setRemoteStream] = useState(null);
const [connectionState, setConnectionState] = useState("disconnected");
const [callState, setCallState] = useState("idle");
const connect = useCallback(async (roomId) => {
try {
setConnectionState("connecting");
setCallState("calling");
console.log("Connecting to room:", roomId);
setTimeout(() => {
setConnectionState("connected");
setCallState("connected");
}, 1e3);
} catch (error) {
console.error("Failed to connect:", error);
setConnectionState("failed");
setCallState("ended");
}
}, []);
const disconnect = useCallback(() => {
setConnectionState("disconnected");
setCallState("idle");
setLocalStream(null);
setRemoteStream(null);
console.log("Disconnected");
}, []);
return {
connect,
disconnect,
localStream,
remoteStream,
connectionState,
callState
};
}
// src/providers/WebRTCProvider.tsx
import { createContext, useContext } from "react";
import { jsx } from "react/jsx-runtime";
var WebRTCContext = createContext(null);
var defaultConfig = {
iceServers: [
{ urls: "stun:stun.l.google.com:19302" }
],
signaling: {
url: "ws://localhost:3001"
}
};
function WebRTCProvider({ children, config = defaultConfig }) {
return /* @__PURE__ */ jsx(WebRTCContext.Provider, { value: { config }, children });
}
// src/index.ts
var VERSION = "1.0.0";
export {
AudioCall,
ScreenShare,
VERSION,
VideoCall,
WebRTCProvider,
useWebRTC
};