java和js 的websocket代码机制详解
时间: 2024-02-09 22:13:28 浏览: 377
WebSocket是一种基于TCP协议的全双工通信协议,可以在客户端和服务器之间建立实时的双向通信。Java和JS都提供了对WebSocket的支持,下面分别介绍它们的代码机制。
Java的WebSocket代码机制:
1. 引入WebSocket依赖
在Maven项目中,可以在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-server</artifactId>
<version>1.13.1</version>
</dependency>
```
2. 创建服务器端点
使用javax.websocket.server.ServerEndpoint注解创建WebSocket服务器端点,指定路径和处理类:
```
@ServerEndpoint("/websocket")
public class WebSocketServer {
// 处理连接建立事件
@OnOpen
public void onOpen(Session session) {
// ...
}
// 处理收到消息事件
@OnMessage
public void onMessage(String message, Session session) {
// ...
}
// 处理连接关闭事件
@OnClose
public void onClose(Session session) {
// ...
}
// 处理错误事件
@OnError
public void onError(Throwable error) {
// ...
}
}
```
3. 启动WebSocket服务器
使用javax.websocket.server.ServerContainer启动WebSocket服务器,指定端口和路径:
```
Server server = new Server("localhost", 8080, "/path");
ServerContainer container = ContainerProvider.getWebSocketContainer();
container.addEndpoint(server);
server.start();
```
4. 创建WebSocket客户端
使用javax.websocket.ClientEndpoint注解创建WebSocket客户端,指定路径和处理类:
```
@ClientEndpoint("/websocket")
public class WebSocketClient {
// 处理连接建立事件
@OnOpen
public void onOpen(Session session) {
// ...
}
// 处理收到消息事件
@OnMessage
public void onMessage(String message, Session session) {
// ...
}
// 处理连接关闭事件
@OnClose
public void onClose(Session session) {
// ...
}
// 处理错误事件
@OnError
public void onError(Throwable error) {
// ...
}
}
```
5. 连接WebSocket服务器
使用javax.websocket.ClientManager连接WebSocket服务器,指定路径和URI:
```
ClientEndpointConfig config = ClientEndpointConfig.Builder.create().build();
ClientManager client = ClientManager.createClient();
client.connectToServer(new WebSocketClient(), config, new URI("ws://localhost:8080/path"));
```
JS的WebSocket代码机制:
1. 创建WebSocket对象
使用WebSocket构造函数创建WebSocket对象,指定服务器地址和路径:
```
var socket = new WebSocket("ws://localhost:8080/path");
```
2. 注册事件处理程序
使用WebSocket对象的onopen、onmessage、onclose和onerror属性注册事件处理程序:
```
socket.onopen = function(event) {
// ...
};
socket.onmessage = function(event) {
// ...
};
socket.onclose = function(event) {
// ...
};
socket.onerror = function(event) {
// ...
};
```
3. 发送消息
使用WebSocket对象的send方法发送消息:
```
socket.send("Hello, server!");
```
以上便是Java和JS的WebSocket代码机制的详解。
阅读全文