socket io客户端Android中打开握手响应为空

socket io客户端Android中打开握手响应为空,android,node.js,websocket,socket.io,java-websocket,Android,Node.js,Websocket,Socket.io,Java Websocket,我正在为Android实现nv websocket客户端。我的日志中出现了这样的错误。如何成功连接 com.neovisionaries.ws.client.WebSocketException: The status line of the opening handshake response is empty. 09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err: at

我正在为Android实现nv websocket客户端。我的日志中出现了这样的错误。如何成功连接

com.neovisionaries.ws.client.WebSocketException: The status line of the opening handshake response is empty.
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.HandshakeReader.readStatusLine(HandshakeReader.java:99)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.HandshakeReader.readHandshake(HandshakeReader.java:48)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.WebSocket.readHandshake(WebSocket.java:3244)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.WebSocket.shakeHands(WebSocket.java:3123)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.WebSocket.connect(WebSocket.java:2155)
我的服务器端代码在Socket.js中。我有什么遗漏吗

var app = require('express')();
var http = require('http').Server(app);

var io = require('socket.io')(http);


io.on('connection', function(socket){
console.log('client connected');
    let jsonObject = {
        name: 'shihab',
        age : 28
    };

    io.emit('test-event', jsonObject);
    console.log(jsonObject);
});


http.listen(3000, function(){
    console.log('listenting on port 3000');
});
&我正在我的活动中用android实现这一点

    @Override
    protected void onResume() {

        super.onResume();
//        CommonTasks.handleSocket();
        initSocket();
    }


    private void initSocket() {

        try {
            // Connect to the server and perform an opening handshake.
            // This method blocks until the opening handshake is finished.
            WebSocketFactory webSocketFactory = new WebSocketFactory();

            ws = webSocketFactory.setConnectionTimeout(5000).
                    createSocket(SOCKET_URL, 5000);

            ws.addListener(new WebSocketAdapter() {
                @Override
                public void onStateChanged(WebSocket websocket, WebSocketState newState) throws Exception {


                }

                @Override
                public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {

                    Log.e("onConnected", "onConnected");
                }

                @Override
                public void onConnectError(WebSocket websocket, WebSocketException cause) throws Exception {
                    Log.e("onConnectError", "onConnectError");

                }

                @Override
                public void onDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame, boolean closedByServer) throws Exception {
                    Log.e("onDisconnected", "onDisconnected");

                }

                @Override
                public void onTextMessage(WebSocket websocket, String text) throws Exception {

                }


                @Override
                public void onError(WebSocket websocket, WebSocketException cause) throws Exception {

                }


                @Override
                public void onMessageError(WebSocket websocket, WebSocketException cause, List<WebSocketFrame> frames) throws Exception {

                }


            });
            new SocketTask().execute("");
            Log.e("called", "called");

        } catch (IOException e) {

        }

    } 


    class SocketTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {

            try {
                ws.connect();

            } catch (OpeningHandshakeException e) {
                // Get the status code.
                int statusCode = e.getStatusLine().getStatusCode();
                Log.e("OpeningHandshakeExcep", "Status code..." + statusCode);

                // If the status code is in the range of 300 to 399.
                if (300 <= statusCode && statusCode <= 399) {
                    // Location header should hold the redirection URL.
                    String location = e.getHeaders().get("Location").get(0);
                }
            } catch (HostnameUnverifiedException e) {
                e.printStackTrace();

                // The certificate of the peer does not match the expected hostname.
            } catch (WebSocketException e) {
                e.printStackTrace();
                // Failed to establish a WebSocket connection.
            } catch (Exception e6) {
                showLog(CommonConstraints.SOCKET_TAG, e6.getMessage());
                Application.getInstance().trackException(e6);
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {

        }

    }
@覆盖
受保护的void onResume(){
super.onResume();
//CommonTasks.handleSocket();
initSocket();
}
私有void initSocket(){
试一试{
//连接到服务器并执行开始握手。
//此方法将一直阻止,直到开始握手完成。
WebSocketFactory WebSocketFactory=新的WebSocketFactory();
ws=webSocketFactory.setConnectionTimeout(5000)。
createSocket(SOCKET_URL,5000);
ws.addListener(新的WebSocketAdapter(){
@凌驾
public void onStateChanged(WebSocket WebSocket,WebSocketState newState)引发异常{
}
@凌驾
未连接的公共void(WebSocket、WebSocket、映射头)引发异常{
Log.e(“未连接”、“未连接”);
}
@凌驾
public void onConnectError(WebSocket WebSocket,WebSocket异常原因)引发异常{
Log.e(“onConnectError”、“onConnectError”);
}
@凌驾
public void onDisconnected(WebSocket WebSocket、WebSocketFrame serverCloseFrame、WebSocketFrame clientCloseFrame、boolean closedByServer)引发异常{
Log.e(“onDisconnected”、“onDisconnected”);
}
@凌驾
public void onTextMessage(WebSocket WebSocket,字符串文本)引发异常{
}
@凌驾
public void onError(WebSocket WebSocket,WebSocket异常原因)引发异常{
}
@凌驾
public void onMessageError(WebSocket WebSocket、WebSocket异常原因、列表框架)引发异常{
}
});
新建SocketTask().execute(“”);
Log.e(“被称为”、“被称为”);
}捕获(IOE异常){
}
} 
类SocketTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
ws.connect();
}捕获(打开和关闭异常){
//获取状态代码。
int statusCode=e.getStatusLine().getStatusCode();
Log.e(“openinghandshakexp”,“状态代码…”+状态代码);
//如果状态代码在300到399之间。
如果(300