java websocket示例 java 发送json数据,前端JavaScript接收json数据
时间: 2023-04-03 09:01:53 浏览: 180
WebSocket实战之——JavaScript例子
可以使用Java的WebSocket API来实现WebSocket示例,具体步骤如下:
1. 创建WebSocket服务器端,监听客户端的连接请求。
2. 客户端连接成功后,服务器端会创建一个WebSocket会话对象,可以通过该对象向客户端发送消息。
3. 在Java中,可以使用JSON库来生成和解析JSON数据。例如,使用Gson库可以将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。
4. 在服务器端,可以使用WebSocket会话对象的getBasicRemote()方法获取一个RemoteEndpoint.Basic对象,通过该对象可以向客户端发送消息。
5. 在客户端,可以使用JavaScript的WebSocket API来连接WebSocket服务器,并通过WebSocket对象的send()方法发送消息。接收到消息后,可以通过WebSocket对象的onmessage()方法处理消息。
下面是一个简单的Java WebSocket示例,演示如何发送JSON数据:
```java
import com.google.gson.Gson;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@ServerEndpoint("/websocket")
public class WebSocketServer {
private static Map<Session, String> clients = new HashMap<>();
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket opened: " + session.getId());
clients.put(session, "");
}
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("WebSocket message received: " + message);
Gson gson = new Gson();
Message msg = gson.fromJson(message, Message.class);
clients.put(session, msg.getUsername());
broadcast(gson.toJson(msg));
}
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket closed: " + session.getId());
clients.remove(session);
}
@OnError
public void onError(Throwable error) {
System.out.println("WebSocket error: " + error.getMessage());
}
private void broadcast(String message) {
for (Session session : clients.keySet()) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static class Message {
private String username;
private String content;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
}
```
在上面的示例中,我们定义了一个WebSocket服务器端,监听"/websocket"路径的连接请求。当客户端连接成功后,服务器端会创建一个WebSocket会话对象,并将其保存到clients集合中。当客户端发送消息时,服务器端会将消息解析为一个Message对象,并将其转换为JSON字符串,然后通过WebSocket会话对象的getBasicRemote()方法向所有客户端发送消息。当客户端断开连接时,服务器端会将其从clients集合中移除。
在客户端,可以使用以下代码连接WebSocket服务器,并发送JSON数据:
```javascript
var socket = new WebSocket("ws://localhost:808/websocket");
socket.onopen = function(event) {
console.log("WebSocket opened");
};
socket.onmessage = function(event) {
console.log("WebSocket message received: " + event.data);
var msg = JSON.parse(event.data);
// 处理接收到的消息
};
socket.onclose = function(event) {
console.log("WebSocket closed");
};
socket.onerror = function(event) {
console.log("WebSocket error: " + event.message);
};
function sendMessage(username, content) {
var msg = {
username: username,
content: content
};
socket.send(JSON.stringify(msg));
}
```
在上面的代码中,我们使用WebSocket API连接WebSocket服务器,并定义了四个事件处理函数:onopen、onmessage、onclose和onerror。当WebSocket连接成功时,会调用onopen函数;当接收到消息时,会调用onmessage函数;当WebSocket连接关闭时,会调用onclose函数;当WebSocket发生错误时,会调用onerror函数。我们还定义了一个sendMessage函数,用于向服务器发送JSON数据。在接收到消息时,我们可以通过JSON.parse()方法将JSON字符串解析为JavaScript对象,然后进行处理。
希望这个示例能够帮助你实现Java WebSocket发送JSON数据,并在前端JavaScript接收JSON数据的功能。
阅读全文