java - onMessage WebSocket 中的消息处理
问题描述
我正在尝试实现 WebSocket 客户端。
我的代码在这里:
import org.json.JSONObject;
import javax.websocket.*;
import java.io.IOException;
public class MyClientEndpoint extends Endpoint {
private Session session;
@Override
public void onOpen(Session session, EndpointConfig endpointConfig) {
System.out.println("Web socket opened");
this.session = session;
this.session.addMessageHandler(new MessageHandler.Whole<String>() {
public void onMessage(String message) {
System.out.println("!!!!!!!!!!!!!!! Retrieved: " + message);
JSONObject jsonResponse = new JSONObject(message);
String user = jsonResponse.get("user").toString();
System.out.println("!!!!!!!!!!!!!!! The User: " + user);
}
});
}
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
}
问题出在onMessage(String message)
方法上,因为在打印消息后,我似乎无法处理消息以创建String user
对象。我该如何实现呢?
我正在使用 Glassfish Tyrus。
谢谢!
解决方案
我找到了问题所在。在JSONObject
我创建的情况下,user
密钥不在第一行,所以我必须使用另一个密钥才能访问user
密钥。问题是当我尝试访问user
密钥时,我没有收到任何异常。
推荐阅读
- ios - 如何创建可更新的 CoreML 模型?
- vuetify.js - 如何使用 vee-validate 4 (alpha) 和 Vuetify 进行验证?
- c++ - 在 C++ 中从文件读取并动态分配到 Student 类型的数组中
- javascript - 用 Jest 发出警告
- mapbox - mapbox 表达式通过 id 数组过滤图层的特征属性(特征 id)
- html - 我的链接属性在 html 和 css 工作表之间不起作用
- elasticsearch - Elasticseach 使用 NEST 将索引替换为新的但别名相同的索引
- react-native - react-native flatList 是灰色的
- asp.net - 在访问说明符上使用 Rest Web API 执行 CRUD 操作时出错
- oracle - 更新以特殊字符开头的 oracle 记录