websocket java 应用例子
时间: 2023-07-06 14:08:41 浏览: 155
以下是一个使用 Java WebSocket API 实现的简单聊天室的示例代码:
```java
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 ChatEndpoint {
private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<>());
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
broadcast("New user has joined the chat.");
}
@OnMessage
public void onMessage(Session session, String message) {
broadcast(session.getId() + ": " + message);
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
broadcast("User has left the chat.");
}
private void broadcast(String message) {
for (Session session : sessions) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
```
在上面的代码中,我们使用了 `@ServerEndpoint` 注解来创建一个 WebSocket 服务器端点。我们定义了一个 `sessions` 集合来存储所有连接到聊天室的客户端会话,然后在 `onOpen()` 方法中添加新会话并广播一条消息。在 `onMessage()` 方法中,当客户端发送一条消息时,我们将该消息广播到所有连接的客户端。在 `onClose()` 方法中,当客户端断开连接时,我们将该会话从 `sessions` 集合中移除并广播一条消息。最后,我们使用 `broadcast()` 方法来将消息发送到所有连接的客户端。
要使用此代码,您需要将其打包为 WAR 文件并将其部署到支持 WebSocket 的 Java Web 容器中,例如 Apache Tomcat。然后,在客户端上,您可以使用 JavaScript WebSocket API 或任何其他 WebSocket 客户端库来连接到该服务器端点并发送消息。
阅读全文