UNPKG

multirtc-websocket

Version:

1) It is a skype-like demo using WebRTC for realtime connections! 2) It allows you enable/disable webcams; and join with or without webcams! 3) It allows you share screen using existing peer connections! 4) It allows you share files with preview and downl

276 lines (234 loc) 31.1 kB
<!-- // Muaz Khan - www.MuazKhan.com // MIT License - www.WebRTC-Experiment.com/licence // Experiments - github.com/muaz-khan/WebRTC-Experiment --> <html lang="en"> <head> <title>MultiRTC! / RTCMultiConnection Demo ® Muaz Khan</title> <meta name="description" content="MultiRTC is a WebRTC skype-like application that allows all features as skype provides E.g. text conversation, file sharing, enable/disable screen, enable/disable webcam or microphone etc. It provides additional features like auto-text translation in about 41 languages. It also provides customization of each feature so that you can set each value yourself e.g. chunk-size, intervals, etc." /> <meta name="keywords" content="MultiRTC,RTCMultiConnection,WebRTC,Demos,Experiments,Muaz Khan,WebRTC and Skype,Skype like Demo" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <link rel="author" type="text/html" href="https://plus.google.com/+MuazKhan"> <meta name="author" content="Muaz Khan"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <!-- ui-stylesheet --> <link href="style.css" rel="stylesheet"> <link href="scrol-bars.css" rel="stylesheet"> <!-- www.RTCMultiConnection.org/changes-log/ --> <script src="//cdn.webrtc-experiment.com/RTCMultiConnection.js"> </script> <script src="linkify.js"> </script> </head> <body> <div class="settings"> <button id="settings" title="Customize many options according to your own needs!">Settings</button> </div> <div class="self-url"> <label><a href="https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC-simple">MultiRTC Demo</a> is using <a href="https://www.webrtc-experiment.com/">WebRTC</a> and <a href="http://www.RTCMultiConnection.org/">RTCMultiConnection.js</a>!</label> </div> <h1 style="border: 0;text-align: center;width: 187px;"> <img src="images/logo.png"><br /> <a href="http://www.rtcmulticonnection.org/docs/" target="_blank" style="text-decoration:none;">MultiRTC!</a> </h1> <div class="users-list" title="Click to view all shared screens and videos!"> <div class="numbers-of-users">0</div> <img src="images/users.png"> </div> <div class="main-input-box"> <textarea placeholder="Send a message"></textarea> <p id="who-is-typing"></p> <div class="controls"> <button id="allow-webcam" class="icon" disabled title="Enable Your Webcam"></button> <button id="allow-mic" class="icon" disabled title="Enable Your Microphone"></button> <button id="allow-screen" class="icon" disabled title="Enable Your Screen"></button> <button id="share-files" class="icon" disabled title="Select and Share Your Files"></button> </div> </div> <div class="settings-panel"> <input type="checkbox" id="autoTranslateText"> <label for="autoTranslateText" title="Click to chat with users from different locales! All incoming text messages will be auto converted in your language!">Auto translate text into</label> <select id="language" title="Select Language in which all incoming messages will be auto converted!"> <option value="en">English</option> <option value="ar">Arabic (العربية)</option> <option value="zh-CN">Chinese (Simplified Han) [中文简体]</option> <option value="zh-TW">Chinese (Traditional Han) [中國傳統]</option> <option value="ru">Russian (Русский)</option> <option value="de">Dutch</option> <option value="fr">French (Français)</option> <option value="hi">Hindi (हिंदी)</option> <option value="pt">Portuguese (Português)</option> <option value="es">Spanish (Español)</option> <option value="tr">Turkish (Türk)</option> <option value="nl">Nederlands</option> <option value="it">Italiano</option> <option value="pl">Polish (Polski)</option> <option value="ro">Roman (Român)</option> <option value="sv">Swedish (Svensk)</option> <option value="vi">Vietnam (Việt)</option> <option value="th">Thai(ภาษาไทย)</option> <option value="ja">Japanese (日本人)</option> <option value="ko">Korean (한국의)</option> <option value="el">Greek (ελληνικά)</option> <option value="ts">Tamil (தமிழ்)</option> <option value="hy">Armenian (հայերեն)</option> <option value="bs">Bosnian (Bosanski)</option> <option value="ca">Catalan (Català)</option> <option value="hr">Croatian (Hrvatski)</option> <option value="dq">Danish (Dansk)</option> <option value="eo">Esperanto</option> <option value="fi">Finnish (Suomalainen)</option> <option value="ht">Haitian Creole (Haitian kreyòl)</option> <option value="hu">Hungarian (Magyar)</option> <option value="is">Icelandic</option> <option value="id">Indonesian</option> <option value="la">Latin (Latinum)</option> <option value="lv">Latvija (Latvijas or lætviə)</option> <option value="mk">Macedonian (Македонски)</option> <option value="no">Norwegian (norsk)</option> <option value="sr">Serbian (српски)</option> <option value="sk">Slovak (Slovenský)</option> <option value="ws">Swahili (Kiswahili)</option> <option value="cy">Welsh (Cymraeg)</option> </select> <button id="save-settings" style="float: right;">Save Settings</button> <table> <tr> <td> <h2>Set Bandwidth</h2><br /> <label for="audio-bandwidth" class="adjust-width">Audio bandwidth</label> <input type="text" id="audio-bandwidth" value="50" title="kbits/sec"><small>kbps</small> <br /> <label for="video-bandwidth" class="adjust-width">Video bandwidth</label> <input type="text" id="video-bandwidth" value="256" title="kbits/sec"><small>kbps</small> </td> <td> <h2>Set Resolutions</h2><br /> <label for="video-width" class="adjust-width">Video Width</label> <input type="text" id="video-width" value="640" title="You can use values like: 1920, 1280, 960, 640, 320, 320"> <br /> <label for="video-height" class="adjust-width">Video Height</label> <input type="text" id="video-height" value="360" title="You can use values like: 1080, 720, 360, 480, 240, 180"> </td> </tr> <tr> <td> <input type="checkbox" id="prefer-sctp" checked> <label for="prefer-sctp" title="Prefer using SCTP data channels. Otherwise, RTP data channels will be used.">Is Prefer SCTP Data Channels?</label><br /> <label for="chunk-size" class="adjust-width">Chunk Size</label> <input type="text" id="chunk-size" value="15000" title="Chrome's sending limit is 64000 however Firefox's receiving limit is 16000."> <small>chars</small> <br /> <label for="chunk-interval" class="adjust-width">Chunk Interval</label> <input type="text" id="chunk-interval" value="100" title="There must be an interval from 50ms to 500ms to make sure data isn't seamlessly skipped."><small>milliseconds</small><br /><br /> <input type="checkbox" id="skip-RTCMultiConnection-Logs"> <label for="skip-RTCMultiConnection-Logs" title="You can disable all RTCMultiConnection logs.">skip RTCMultiConnection Logs?</label> </td> <td> <h2>Select Devices</h2><br /> <label for="audio-devices">Audio Devices</label> <select id="audio-devices"></select> <br /> <label for="video-devices">Video Devices</label> <select id="video-devices"></select> </td> </tr> <tr> <td> <label for="max-participants-allowed">Max Participants Allowed?</label> <input type="text" id="max-participants-allowed" value="256"> <br /><br /> <input type="checkbox" id="fake-pee-connection"> <label for="fake-pee-connection" title="This feature works only on Chrome; it means that a few peer connection will be creates with no audio/video; and no data channels!">Setup Fake Peer Connection?</label> </td> <td> <h2>Select Candidates</h2><br /> <input type="checkbox" id="prefer-stun" checked> <label for="prefer-stun">Allow STUN Candidates?</label><br /> <input type="checkbox" id="prefer-turn" checked> <label for="prefer-turn">Allow TURN Candidates?</label><br /> <input type="checkbox" id="prefer-host" checked> <label for="prefer-host">Allow Hose Candidates?</label> </td> </tr> <tr> <td> <h2>Set DataChannel Options</h2><br /> <label for="dataChannelDict">dataChannelDict</label> <input type="text" id="dataChannelDict" value="{ordered:true}"> </td> <td> <h2>Set SDP Constraints</h2><br /> <input type="checkbox" id="OfferToReceiveAudio" checked> <label for="OfferToReceiveAudio">OfferToReceiveAudio</label><br /> <input type="checkbox" id="OfferToReceiveVideo" checked> <label for="OfferToReceiveVideo">OfferToReceiveVideo</label><br /> <input type="checkbox" id="IceRestart"> <label for="IceRestart">IceRestart</label> </td> </tr> </table> </div> <div class="users-container"></div> <div class="main"> <div class="new-message" style="overflow: hidden;height: 250px;"> <div class="user-info" style="height: 100%"> <img src="images/user.png"> </div> <div class="user-activity"> <div style="float:right;"> MultiRTC is open-sourced <a href="https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC-simple">here</a>! </div> <h2 class="header">Welcome Sir!</h2> <p class="message"> Please Enter a <span style="color:red;">UNIQUE</span> room-name: <input type="text" id="room-name" placeholder="Private Room-ID" style="border: 1px solid rgb(253, 253, 253);box-shadow: inset 0 0 0 1px rgb(53, 52, 52);outline: 1px solid rgb(7, 7, 7);" title="Your private rooms unique-id. It is required!"><br /> <small>You can enter email; or any string or numbers!</small> <br /> <small style="color: rgb(1, 170, 143);font-style: italic;font-weight: bold;">You MUST <span style="color:red;">manually</span> share this <span style="color:red;">unique room-name</span> with target users so they can join you!</small> <br /><br /> Please Enter Your Full Name: <input type="text" id="your-name" placeholder="(optional)" title="Optional but Recommended!"><button id="continue" title="Click to join the room!">continue</button> </p> </div> </div> <div class="new-message" style="overflow: hidden;height: 300px;"> <div class="user-info" style="height: 100%"> <img src="images/help.png"> </div> <div class="user-activity"> <h2 class="header">What is <a href="https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC-simple">MultiRTC</a>?</h2> <p class="message"> <ol style="margin-left:2em;"> <li> It is a skype-like demo using WebRTC for realtime connections! </li> <li> It allows you enable/disable webcams; and join with or without webcams! </li> <li> It allows you share screen using existing peer connections! </li> <li> It allows you share files with preview and download links! </li> <li> It allows you <span style="color:red;">auto translate incoming messages</span> in your <a href="http://www.rtcmulticonnection.org/docs/language/">own language</a>! </li> <li> It gives you full control over bandwidth and screen resolutions! </li> <li> It allows you adjust file sharing speed yourself by setting <a href="http://www.rtcmulticonnection.org/docs/chunkSize/">chunk-size</a> and <a href="http://www.rtcmulticonnection.org/docs/chunkInterval/">chunk-intervals</a>! </li> <li> It allows you test all WebRTC features by enabling/disabling some check-boxes! </li> </ol> </p> </div> </div> </div> <audio src="data:audio/mp3;base64,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I/8s9yK0RxeEdPciTkCeo3TwwBE///////////////4s02AAABLlkoHIXc/1sWo5TzJGaCYP46BaPBaHAnPAif5IGJ+aifls//OkVP8a3f863z0jyoqAgm1sex6E3LbAipgh9aDAQAAAQWTlltu2shlj1HCQZEnMXVWG6g1YYZqMaNPJxRzvSHJhXEsMuC07Vs6JXEAnAd7UXhRk1etbTSLo3mlJMiwdtqq6VibCZTxn75PsbXaTL4p5cuoce9fFjHsWKZ4o7qE1R2oPNKM6KWzIKsl5JL0XVInMDopg9xpsVpimAKMGi5EvJMYYmeH7SQrWbTSIJlEi8rPufgxVCbFbIfPIIYNw1eKD/aU7L+laevJPjY4Z14S/Wx9tIZHRSilCPNj+K7RtuniipyOeZsFkHW1///////////////+TTAAAARwDB6IUbpbgzTQE9QacMM1GNGi5SPyqhKIRkAwR1ps0tsPJ//OkVP8a5cE23z0j2IpghmTcY9gMUWXAiLgh9awGMBgABLacctttsgtguCqJ+OMTOASwhBv7PiK3nUcipZTEEwPw35i+WuyKh8r1enbCfCcToFyPJyX4Gjju1pdJQjUgVpivlN+K23cory8NuV8Mh06+wn9SjVi0iLaUnVw0anNEe6orUgDbz6IoQLMq7JGjR5Ba3kjju2VNsyqbRI3KCkm5OQUmTo/IZIzqiJQxpJPnom6VqUJEbNRhEAPE6ozCqiaXFw2PsG6zaUMgXZUvzL1Gmly00lkxQgHPuMi10gmY5LkhOCz4guXM0VE73lnpnGKtFv//////4I2WAAAA9AuDMT8XMWNIAwCAdyJjqcnEg9UmQJgch31Pzd3BkfM6//OkVP8bDh003z0o1goggmlsex4svTvAiOgh9asCAEAAQWq+Wy2yQcQC0SAOZcQyEwUaSxbQl8pVgtquV6GoxtORyG4VzUc92JniLtwGyiV3Ed3YTu74fSei5MXi73ZyNDugNr20UR+tbOQ+B8PmUOC8USRZMA+nPt0xR2fJkqmzMtpqrETpC06Q3TqUW5QpK71mLYWEGbl2C7V3WW29xYpZeZR3it1mzPW+p+fUutzVat6HZx6sWnPiI6VLRzJKl9oqDrLdmzPPlyWoltu0fDgVbMzuZ59t/uv7pouqP0j83C9mvVIZVWyo+pf///////////////oNx24A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" id="message-sound"></audio> <!-- User Interface --> <script src="ui.main.js"> </script> <script src="ui.peer-connection.js"> </script> <script src="ui.share-files.js"> </script> <script src="ui.users-list.js"> </script> <script src="ui.settings.js"> </script> </body> </html>