html设计一个简易的网上聊天室,用户登陆后能发言,(用户名密码无需存入数据库)用户发言时,直接给出用户名,不需要用户手工输入用户名,显示所有在线成员
时间: 2023-08-11 21:06:24 浏览: 45
以下是一个简单的HTML代码示例,实现一个基础的网上聊天室界面:
```html
<!DOCTYPE html>
<html>
<head>
<title>网上聊天室</title>
<meta charset="UTF-8">
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
#chatbox {
height: 500px;
overflow: auto;
padding: 10px;
border: 1px solid #ccc;
}
#message {
width: 80%;
padding: 10px;
border: 1px solid #ccc;
}
#submit {
padding: 10px 20px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
#username {
padding: 10px;
border: 1px solid #ccc;
}
#userlist {
padding: 10px;
border: 1px solid #ccc;
display: inline-block;
vertical-align: top;
}
</style>
</head>
<body>
<div id="chatbox"></div>
<input type="text" id="message" placeholder="请输入您要发送的消息">
<button id="submit" onclick="sendMessage()">发送</button>
<input type="hidden" id="username" value="用户" /> <!-- 默认用户名为“用户” -->
<div id="userlist"></div>
<script>
var socket = new WebSocket("ws://localhost:8080"); // 使用WebSocket连接后台服务器
var chatbox = document.getElementById("chatbox");
var message = document.getElementById("message");
var submit = document.getElementById("submit");
var username = document.getElementById("username");
var userlist = document.getElementById("userlist");
socket.onopen = function(event) {
socket.send(JSON.stringify({ type: "login", username: username.value })); // 发送登录消息
};
socket.onmessage = function(event) {
var data = JSON.parse(event.data);
switch (data.type) {
case "login":
userlist.innerHTML = ""; // 清空在线用户列表
for (var i = 0; i < data.users.length; i++) {
var user = document.createElement("div");
user.innerHTML = data.users[i];
userlist.appendChild(user);
}
break;
case "message":
var msg = document.createElement("div");
msg.innerHTML = "<strong>" + data.username + ":</strong> " + data.message;
chatbox.appendChild(msg);
chatbox.scrollTop = chatbox.scrollHeight; // 滚动到最底部
break;
case "logout":
userlist.innerHTML = ""; // 清空在线用户列表
for (var i = 0; i < data.users.length; i++) {
var user = document.createElement("div");
user.innerHTML = data.users[i];
userlist.appendChild(user);
}
break;
}
};
function sendMessage() {
if (message.value.trim() !== "") {
socket.send(JSON.stringify({ type: "message", username: username.value, message: message.value.trim() })); // 发送消息
message.value = ""; // 清空输入框
}
}
</script>
</body>
</html>
```
该页面中使用了WebSocket连接后台服务器,通过JSON格式传递消息。后台服务器需要实现登录、发送消息和退出登录等功能,并维护在线用户列表。由于这部分代码与HTML代码无关,因此在此不做详细说明。