我们在node.js服务器中设置了socket.io。我们尝试使用Socket.io Java Client和Socket.io iOS Client。我们可以通过iOS连接,但我们无法通过Android连接。我们没有任何线索,为什么Android没有连接。
服务器端:
var socketIO = require('socket.io');
//var io =
GLOBAL._io = socketIO(httpServer);
_io.on('connection', (socket) => {
console.log('Client connected');
setInterval(() => _io.emit('time', new Date().toTimeString()), 1000);
socket.on('disconnect', () => console.log('Client disconnected'));
});
Android无效
public void addSocketConnection() throws URISyntaxException {
Log.i("Socket.io","Init");
mSocket = IO.socket("http://dev.myapp.com/parse");
mSocket.on(Socket.EVENT_CONNECT,onConnect);
mSocket.on("time",onTime);
mSocket.on(Socket.EVENT_DISCONNECT,onDisconnect);
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.connect();
Log.i("Socket.io","Connect");
}
private Emitter.Listener onTime = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.i("Socket.io","OnTime");
}
};
private Emitter.Listener onConnect = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.i("Socket.io","OnConnect");
}
};
private Emitter.Listener onDisconnect = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.i("Socket.io","DisConnect");
}
};
iOS正常工作
NSURL* url = [[NSURL alloc] initWithString:@"http://dev.myapp.com/parse"];
SocketIOClient* socket = [[SocketIOClient alloc] initWithSocketURL:url options:@{@"log": @YES, @"forcePolling": @YES}];
[socket on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) {
NSLog(@"socket connected");
}];
[socket onAny:^(SocketAnyEvent *event) {
NSLog(@"On any event :%@",event.event);
}];
[socket on:@"time" callback:^(NSArray* data, SocketAckEmitter* ack) {
NSLog(@"Time %@",data[0]);
}];
[socket connect];
答案 0 :(得分:0)
我已经在github中修复并更新了,忘了在这里更新。github issue link
有点困惑,但修复了两者的工作。
我们有解析服务器网址:" http://dev.myapp.com/parse" 我们的节点网址:" http://dev.myapp.com/"
我们错误地指向了网址" http://dev.myapp.com/parse"对于iOS,它正在工作。 所以我们指向Android的相同网址,它无效。
然后我们将这两个网址更改为" http://dev.myapp.com",现在适用于iOS和Android。
注意: 我们不知道为什么iOS正在为#34; http://dev.myapp.com/parse"
工作