socket io客户端Android中打开握手响应为空
我正在为Android实现nv websocket客户端。我的日志中出现了这样的错误。如何成功连接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
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