java websocket示例 前端JavaScript接收java后台websocket发送的json数据
时间: 2023-04-03 07:02:04 浏览: 133
可以参考以下代码:
前端JavaScript代码:
var ws = new WebSocket("ws://localhost:808/websocket");
ws.onmessage = function(event) {
var data = JSON.parse(event.data);
console.log(data);
};
后台Java代码:
@ServerEndpoint("/websocket")
public class WebSocketServer {
@OnMessage
public void onMessage(Session session, String message) {
// 处理接收到的消息
JSONObject json = new JSONObject();
json.put("message", message);
session.getBasicRemote().sendText(json.toString());
}
}
相关问题
java websocket示例 java 发送json数据,前端JavaScript接收json数据
可以使用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数据的功能。
百度实时语音识别 websocket javascript前端代码
百度实时语音识别(ASR)是百度云提供的一项语音识别服务,它可以将实时的语音数据转化为文本内容。下面是一个使用WebSocket和JavaScript编写的前端代码示例:
首先,你需要在HTML文件中创建一个WebSocket对象和一些用于显示结果的元素,比如一个文本框和一个按钮。然后,你需要定义一些用于处理WebSocket连接和接收语音识别结果的函数。
```html
<!DOCTYPE html>
<html>
<body>
<textarea id="result" rows="10" cols="50"></textarea>
<button onclick="startListening()">开始识别</button>
<script>
var recognition;
// WebSocket连接地址
var socketUrl = "wss://vop.baidu.com/realtime_asr";
// 启动语音识别
function startListening() {
recognition = new WebSocket(socketUrl);
// 连接成功时的处理函数
recognition.onopen = function (event) {
console.log("WebSocket 连接已建立");
// 发送配置信息
var config = {
"accept-audio-data": true,
"content-type": "audio/pcm;rate=16000",
};
recognition.send(JSON.stringify(config));
};
// 接收到语音识别结果时的处理函数
recognition.onmessage = function (event) {
var result = event.data;
document.getElementById("result").value += result;
};
// 连接关闭时的处理函数
recognition.onclose = function (event) {
console.log("WebSocket 连接已关闭");
};
// 发生错误时的处理函数
recognition.onerror = function (event) {
console.error("WebSocket 错误:", event);
};
}
</script>
</body>
</html>
```
在上面的代码中,我们首先定义了一个`recognition`变量用于存储WebSocket对象。然后,在`startListening`函数中,我们创建一个WebSocket连接,并设置其`onopen`、`onmessage`、`onclose`和`onerror`事件的处理函数。在`onopen`处理函数中,我们发送配置信息给WebSocket服务器。在`onmessage`处理函数中,我们将接收到的语音识别结果显示在文本框中。
需要注意的是,为了使用百度实时语音识别服务,你需要在百度云平台上创建一个应用,并获取到相应的App ID、API Key和Secret Key,并在上述代码中相应地配置。
希望这个代码示例能够帮助你使用百度实时语音识别服务进行语音识别。
阅读全文