java 通过webSocket实现聊天室功能的代码
时间: 2024-03-06 13:46:15 浏览: 162
java实现基于websocket的聊天室
5星 · 资源好评率100%
以下是一个简单的Java实现WebSocket聊天室的示例代码:
1. 首先,我们需要一个WebSocket服务器:
```
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/chat")
public class ChatServer {
private static Set<Session> clients = Collections.synchronizedSet(new HashSet<Session>());
@OnMessage
public void onMessage(String message, Session session) throws IOException {
// Broadcast message to all clients
for (Session client : clients) {
if (!client.equals(session)) {
client.getBasicRemote().sendText(message);
}
}
}
@OnOpen
public void onOpen(Session session) {
// Add new client to the list
clients.add(session);
}
@OnClose
public void onClose(Session session) {
// Remove client from the list
clients.remove(session);
}
}
```
2. 接下来,我们需要一个HTML页面来连接WebSocket服务器并显示聊天室:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebSocket Chat Room</title>
</head>
<body>
<div id="messages"></div>
<form onsubmit="return sendMessage()">
<input type="text" id="message" placeholder="Type your message here...">
<button type="submit">Send</button>
</form>
<script>
var socket = new WebSocket("ws://localhost:8080/chat");
socket.onmessage = function(event) {
var message = event.data;
var messagesDiv = document.getElementById("messages");
messagesDiv.innerHTML += message + "<br>";
};
function sendMessage() {
var messageInput = document.getElementById("message");
var message = messageInput.value;
socket.send(message);
messageInput.value = "";
return false;
}
</script>
</body>
</html>
```
3. 最后,我们需要部署WebSocket服务器和HTML页面。对于WebSocket服务器,您可以使用Tomcat或Jetty等Web容器。将ChatServer类打包成WAR文件并部署到Web容器中即可。对于HTML页面,您可以将其放置在Web容器中的任何目录中。
这样,您就可以在Web浏览器中访问HTML页面并加入聊天室了。当您发送消息时,它将通过WebSocket连接发送到ChatServer,然后ChatServer将该消息广播给所有连接的客户端。
阅读全文