UNPKG

datachannel-client

Version:
93 lines (73 loc) 2.8 kB
<hr> /room-id/<input type="text" id="room-id" placeholder="room-id" style="width: 100px;">/ <button id="open">Open</button> <button id="join">Join</button> <hr> <div id="chat-container"> <input type="text" id="input-text-chat" placeholder="Enter Text Chat" disabled><br> <div class="chat-output"></div> </div> <link rel="stylesheet" href="style.css"> <script src="/socket.io/socket.io.js"></script> <script src="/reliable-signaler/signaler.js"></script> <script src="/DataChannel.js"></script> <script> // initializing DataChannel.js constructor. var channel = new DataChannel(); // using reliable-signaler var signaler = initReliableSignaler(channel, '/'); channel.ondatachannel = function() {}; document.getElementById('open').onclick = function() { var roomid = document.getElementById('room-id').value; if (roomid.replace(/^\s+|\s+$/g, '').length <= 0) { alert('Please enter room-id'); document.getElementById('room-id').focus(); return; } signaler.createNewRoomOnServer(roomid, function() { document.getElementById('open').disabled = true; channel.userid = roomid; channel.transmitRoomOnce = true; channel.open(roomid); }); }; document.getElementById('join').onclick = function() { var roomid = document.getElementById('room-id').value; if (roomid.replace(/^\s+|\s+$/g, '').length <= 0) { alert('Please enter room-id'); document.getElementById('room-id').focus(); return; } this.disabled = true; signaler.getRoomFromServer(roomid, function(roomid) { channel.connect(roomid); // setting 'channel' & connecting socket // setting 'roomToken' and 'broadcaster' and joining channel.join({ id: roomid, owner: roomid }); }); }; channel.onopen = function() { document.getElementById('input-text-chat').disabled = false; }; document.getElementById('input-text-chat').onkeyup = function(e) { if(e.keyCode != 13) return; // removing trailing/leading whitespace this.value = this.value.replace(/^\s+|\s+$/g, ''); if (!this.value.length) return; channel.send(this.value); appendDIV(this.value); this.value = ''; }; channel.onmessage = appendDIV; var chatContainer = document.querySelector('.chat-output'); // a custom method used to append a new DIV into DOM function appendDIV(event) { var div = document.createElement('div'); div.innerHTML = event.data || event; chatContainer.insertBefore(div, chatContainer.firstChild); div.tabIndex = 0; div.focus(); document.getElementById('input-text-chat').focus(); } </script>