java 语言 websocket的
时间: 2023-10-17 22:10:06 浏览: 31
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。Java 语言中提供了一些 WebSocket 库,使得开发者能够轻松地实现 WebSocket 功能。
其中一个比较流行的 Java WebSocket 库是 Tyrus。Tyrus 是 Java API for WebSocket 的参考实现,是 GlassFish 应用服务器的一部分。Tyrus 提供了一个简单易用的 API,使得开发者能够在 Java 应用程序中添加 WebSocket 功能。
使用 Tyrus 实现 WebSocket 功能需要以下步骤:
1.添加 Tyrus 依赖库
```xml
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-server</artifactId>
<version>1.13</version>
</dependency>
```
2.创建 WebSocket 端点类
```java
import javax.websocket.*;
@ServerEndpoint("/websocket")
public class MyWebSocket {
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket opened: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("Received message: " + message);
session.getBasicRemote().sendText("Echo: " + message);
}
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket closed: " + session.getId());
}
@OnError
public void onError(Session session, Throwable error) {
System.out.println("WebSocket error: " + error.getMessage());
}
}
```
3.启动 WebSocket 服务器
```java
import org.glassfish.tyrus.server.Server;
public class MyWebSocketServer {
public static void main(String[] args) {
Server server = new Server("localhost", 8080, "/myapp", MyWebSocket.class);
try {
server.start();
System.out.println("WebSocket server started.");
Thread.currentThread().join();
} catch (Exception e) {
e.printStackTrace();
} finally {
server.stop();
}
}
}
```
4.测试 WebSocket 功能
在浏览器中打开 WebSocket 页面:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WebSocket Test</title>
<script>
var websocket = new WebSocket("ws://localhost:8080/myapp/websocket");
websocket.onopen = function() {
console.log("WebSocket opened.");
};
websocket.onmessage = function(event) {
console.log("Received message: " + event.data);
};
websocket.onclose = function() {
console.log("WebSocket closed.");
};
function sendMessage() {
var message = document.getElementById("message").value;
websocket.send(message);
}
</script>
</head>
<body>
<input type="text" id="message">
<button onclick="sendMessage()">Send</button>
</body>
</html>
```
在页面中输入消息并点击 Send 按钮,即可发送消息并在控制台中查看接收到的消息。