Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket关闭代码:1006节点Android okhttp3 AmazonEc2_Android_Node.js_Amazon Web Services_Websocket_Okhttp - Fatal编程技术网

Websocket关闭代码:1006节点Android okhttp3 AmazonEc2

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

我对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.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感谢您在日志中指出更多错误,我在服务器端和客户端上记录了尽可能多的错误。。。谢谢