java websocket完成长连接
时间: 2023-08-29 19:12:52 浏览: 118
传递指定的参数建立websocket连接,并给指定的连接用户发送消息
5星 · 资源好评率100%
Java提供了一种轻量级的Websocket API,可以很方便地实现长连接。
以下是一个简单的Java Websocket示例:
1. 首先,需要导入Java Websocket API:
```java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
```
2. 然后,定义一个WebSocket服务器端的端点类:
```java
@ServerEndpoint("/websocket")
public class WebSocketServer {
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket opened: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("WebSocket received message: " + message);
}
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket closed: " + session.getId());
}
}
```
3. 在该类中,@ServerEndpoint注解表示该类是一个WebSocket服务器端的端点类,"/websocket"表示该WebSocket服务器端的端点URL。
4. @OnOpen、@OnMessage、@OnClose分别表示WebSocket连接建立、收到消息、断开连接时的处理方法。
5. 接下来,需要在应用程序中启动WebSocket服务器端:
```java
import org.glassfish.tyrus.server.Server;
public class WebSocketServerApp {
public static void main(String[] args) {
Server server = new Server("localhost", 8080, "/websockets", WebSocketServer.class);
try {
server.start();
System.out.println("WebSocket server started");
Thread.currentThread().join();
} catch (Exception e) {
e.printStackTrace();
} finally {
server.stop();
}
}
}
```
6. 在应用程序中启动WebSocket服务器端后,就可以使用浏览器或WebSocket客户端来连接WebSocket服务器端了。
7. 在浏览器中,可以使用JavaScript代码来连接WebSocket服务器端:
```javascript
var ws = new WebSocket("ws://localhost:8080/websockets/websocket");
ws.onopen = function() {
console.log("WebSocket connected");
};
ws.onmessage = function(event) {
console.log("WebSocket received message: " + event.data);
};
ws.onclose = function() {
console.log("WebSocket disconnected");
};
```
8. 在WebSocket客户端中,可以使用Java Websocket API来连接WebSocket服务器端:
```java
import java.net.URI;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
public class WebSocketClientApp {
public static void main(String[] args) {
WebSocketClient client = new WebSocketClient(URI.create("ws://localhost:8080/websockets/websocket")) {
@Override
public void onOpen(ServerHandshake handshake) {
System.out.println("WebSocket connected");
}
@Override
public void onMessage(String message) {
System.out.println("WebSocket received message: " + message);
}
@Override
public void onClose(int code, String reason, boolean remote) {
System.out.println("WebSocket disconnected: " + reason);
}
@Override
public void onError(Exception ex) {
ex.printStackTrace();
}
};
client.connect();
}
}
```
这样,就可以使用Java Websocket API很方便地实现长连接了。
阅读全文