| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Simple Chat</title> |
| <script src="https://unpkg.com/peerjs@1.4.7/dist/peerjs.min.js"></script> |
| <style> |
| body { |
| font-family: monospace; |
| max-width: 600px; |
| margin: 0 auto; |
| padding: 20px; |
| } |
| #message-container { |
| height: 300px; |
| border: 1px solid #ccc; |
| padding: 10px; |
| overflow-y: auto; |
| margin-bottom: 10px; |
| } |
| #message-input { |
| width: 80%; |
| padding: 8px; |
| } |
| #send-btn { |
| width: 18%; |
| padding: 8px; |
| } |
| </style> |
| </head> |
| <body> |
| <h1>Simple Chat</h1> |
| <div id="message-container"> |
| <div>Connecting to chat server...</div> |
| </div> |
| <div> |
| <input type="text" id="message-input" placeholder="Type message here..."> |
| <button id="send-btn">Send</button> |
| </div> |
|
|
| <script> |
| document.addEventListener('DOMContentLoaded', () => { |
| const messageContainer = document.getElementById('message-container'); |
| const messageInput = document.getElementById('message-input'); |
| const sendBtn = document.getElementById('send-btn'); |
| |
| |
| const peer = new Peer({ |
| config: { |
| 'iceServers': [ |
| { urls: 'stun:stun.l.google.com:19302' }, |
| { urls: 'stun:global.stun.twilio.com:3478?transport=udp' }, |
| { |
| urls: 'turn:numb.viagenie.ca', |
| username: 'webrtc@live.com', |
| credential: 'muazkh' |
| } |
| ] |
| } |
| }); |
| |
| let conn; |
| const roomId = 'simple-chat-room'; |
| |
| peer.on('open', (id) => { |
| messageContainer.innerHTML = `<div>Connected to chat room. Your ID: ${id}</div>`; |
| |
| |
| conn = peer.connect(roomId); |
| |
| |
| conn.on('open', () => { |
| appendMessage('Connected to chat room'); |
| }); |
| |
| conn.on('data', (data) => { |
| appendMessage(data); |
| }); |
| |
| conn.on('close', () => { |
| appendMessage('Connection closed'); |
| }); |
| }); |
| |
| peer.on('connection', (connection) => { |
| conn = connection; |
| conn.on('data', (data) => { |
| appendMessage(data); |
| }); |
| }); |
| |
| function appendMessage(message) { |
| const messageElement = document.createElement('div'); |
| messageElement.textContent = message; |
| messageContainer.appendChild(messageElement); |
| messageContainer.scrollTop = messageContainer.scrollHeight; |
| } |
| |
| sendBtn.addEventListener('click', sendMessage); |
| messageInput.addEventListener('keypress', (e) => { |
| if (e.key === 'Enter') sendMessage(); |
| }); |
| |
| function sendMessage() { |
| const message = messageInput.value.trim(); |
| if (message && conn && conn.open) { |
| conn.send(message); |
| appendMessage(`You: ${message}`); |
| messageInput.value = ''; |
| } |
| } |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=commit3r/temp" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |