Websocket关闭代码:1006节点Android okhttp3 AmazonEc2
我对Websocket有问题Websocket关闭代码:1006节点Android okhttp3 AmazonEc2,android,node.js,amazon-web-services,websocket,okhttp,Android,Node.js,Amazon Web Services,Websocket,Okhttp,我对Websocket有问题ws已关闭,代码为1006原因: 环境 Amazon EC2 Instance : t2.micro Ubuntu 18.04 Node : v12.16.3 Websocket : https://github.com/websockets/ws : 7.3.0 MongoDb : shell version v4.2.6 MongoDriver : NodeJs 3.5.7 Okhhtp3 : implementation 'com.squareup.okhtt
ws已关闭,代码为1006原因:
环境
Amazon EC2 Instance : t2.micro Ubuntu 18.04
Node : v12.16.3
Websocket : https://github.com/websockets/ws : 7.3.0
MongoDb : shell version v4.2.6
MongoDriver : NodeJs 3.5.7
Okhhtp3 : implementation 'com.squareup.okhttp3:okhttp:4.6.0'
private WebSocket webSocket;
// Initiate The Socket Connection
private void initiateSocketConnection() {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(WebSocketClient.SERVER_PATH).build();
webSocket = client.newWebSocket(request, new SocketListener());
}
// Private WebSocketListener Class
private class SocketListener extends WebSocketListener {
public SocketListener() {
super();
}
@Override
public void onClosed(@NotNull WebSocket webSocket,
int code,
@NotNull String reason) {
super.onClosed(webSocket,
code,
reason);
Log.d("TAG",
"onClosed: " + code + "-" + reason);
}
@Override
public void onFailure(@NotNull WebSocket webSocket,
@NotNull Throwable t,
okhttp3.@org.jetbrains.annotations.Nullable Response response) {
super.onFailure(webSocket,
t,
response);
}
@Override
public void onMessage(@NotNull WebSocket webSocket,
@NotNull String text) {
super.onMessage(webSocket,
text);
String chat = "{\"chat\":" + text + "}";
Log.d("TAG",
"onMessage: " + chat);
lIndividualChatList.clear();
try {
JSONObject jsonObject = new JSONObject(chat.trim());
// Check If User Array Has Anything
JSONArray returnArray = jsonObject.getJSONArray("chat");
for (int l = 0; l < returnArray.length(); l++) {
if (returnArray.length() > 0) {
// Get The Json Object
JSONObject returnJSONObject = returnArray.getJSONObject(l);
// Get Details
String owner = returnJSONObject.optString("owner");
lIndividualChatList.add(new IndividualListModel(owner));
}
}
// Use The Adapter To Populate The Recycler View
aIndividualChatList = new IndividualListAdapter(lIndividualChatList);
rvList.setAdapter(aIndividualChatList);
aIndividualChatList.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onOpen(@NotNull WebSocket webSocket,
okhttp3.@NotNull Response response) {
super.onOpen(webSocket,
response);
}
}
我从Websockets->MongoDb获取数据,并尝试填充到回收器视图中。如果我使用log.d,数据会很好,但当我填充到recycler视图中时-在应用程序启动时数据会很好,在进入活动时,数据会很好,但在这之后,我开始出现1006错误
NodeJs(服务器)
Android(客户端)
私有WebSocket-WebSocket;
//启动套接字连接
私有void initiateSocketConnection(){
OkHttpClient=新的OkHttpClient();
Request Request=newrequest.Builder().url(WebSocketClient.SERVER_PATH).build();
webSocket=client.newWebSocket(请求,newsocketlistener());
}
//私有WebSocketListener类
私有类SocketListener扩展了WebSocketListener{
公共SocketListener(){
超级();
}
@凌驾
一旦关闭,公共无效(@NotNull WebSocket WebSocket,
int代码,
@NotNull字符串原因){
超级关闭(webSocket,
代码,
原因);
Log.d(“标记”,
“一旦关闭:”+代码+“-”+原因);
}
@凌驾
public void onFailure(@NotNull WebSocket WebSocket,
@不可丢弃的t,
okhttp3.@org.jetbrains.annotations.Nullable响应){
super.onFailure(webSocket,
T
反应);
}
@凌驾
消息上的公共无效(@NotNull WebSocket WebSocket,
@NotNull字符串(文本){
super.onMessage(webSocket,
文本);
字符串chat=“{\”chat\”:“+text+”}”;
Log.d(“标记”,
“onMessage:”+聊天);
lIndividualChatList.clear();
试一试{
JSONObject=newJSONObject(chat.trim());
//检查用户数组是否有任何内容
JSONArray returnArray=jsonObject.getJSONArray(“chat”);
for(int l=0;l0){
//获取Json对象
JSONObject returnJSONObject=returnArray.getJSONObject(l);
//获取详细信息
字符串所有者=returnJSONObject.optString(“所有者”);
添加(新的个人列表模型(所有者));
}
}
//使用适配器填充回收器视图
aIndividualChatList=新的个人列表适配器(lIndividualChatList);
rvList.setAdapter(aIndividualChatList);
aIndividualChatList.notifyDataSetChanged();
}捕获(JSONException e){
e、 printStackTrace();
}
}
@凌驾
打开时的公共无效(@NotNull WebSocket WebSocket,
okhttp3.@NotNull响应){
超级onOpen(webSocket,
反应);
}
}
wierd部分是,它在失败之前工作了一到两次,这导致了混乱。如果它总是失败,并喜欢一个logcat,那就太好了。最好的方法是记录服务器和客户端上所有可能的错误/故障,并查看消息
故障时首先将日志放入内部
@Override
public void onFailure(@NotNull WebSocket webSocket, @NotNull Throwable t, okhttp3.@org.jetbrains.annotations.Nullable Response response) {
super.onFailure(webSocket, t, response);
Log.d("TAG", "websocket failure: " + t + response);
}
发出以下信息:
: `websocket failure: android.view.ViewRootImpl$CalledFromWrongThreadException:
Only the original thread that created a view hierarchy can touch its views.null`
然后在此中包装回收者视图的popluation
getActivity().runOnUiThread(new Runnable() {
public void run() {
// Poplulate the recycler view here....
}
最重要的是,它在失败之前工作了一两次,这导致了混乱。如果它总是失败,并喜欢一个logcat,那就太好了。最好的方法是记录服务器和客户端上所有可能的错误/故障,并查看消息 故障时首先将日志放入内部
@Override
public void onFailure(@NotNull WebSocket webSocket, @NotNull Throwable t, okhttp3.@org.jetbrains.annotations.Nullable Response response) {
super.onFailure(webSocket, t, response);
Log.d("TAG", "websocket failure: " + t + response);
}
发出以下信息:
: `websocket failure: android.view.ViewRootImpl$CalledFromWrongThreadException:
Only the original thread that created a view hierarchy can touch its views.null`
然后在此中包装回收者视图的popluation
getActivity().runOnUiThread(new Runnable() {
public void run() {
// Poplulate the recycler view here....
}
要帮助解决此问题,请设置一个
ws.on('error',…)
事件处理程序。有什么有趣的东西吗?ws.on('error',函数(e){console.log(“error occured”+e);});不firing@O.Jones感谢您在日志中指出更多错误,我在服务器端和客户端上记录了尽可能多的错误。。。感谢帮助解决此问题并设置ws.on('error',…)
事件处理程序。有什么有趣的东西吗?ws.on('error',函数(e){console.log(“error occured”+e);});不firing@O.Jones感谢您在日志中指出更多错误,我在服务器端和客户端上记录了尽可能多的错误。。。谢谢