|
<!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> |