socket.io-java-client和node.js-握手时出错
我正在尝试开发一个android应用程序,它将连接到node.js服务器。下面是错误消息:socket.io-java-client和node.js-握手时出错,java,android,node.js,socket.io,Java,Android,Node.js,Socket.io,我正在尝试开发一个android应用程序,它将连接到node.js服务器。下面是错误消息: 04-28 14:24:52.250: W/System.err(811): io.socket.SocketIOException: Error while handshaking 04-28 14:24:52.250: W/System.err(811): at io.socket.IOConnection.handshake(IOConnection.java:322) 04-28 14:24:5
04-28 14:24:52.250: W/System.err(811): io.socket.SocketIOException: Error while handshaking
04-28 14:24:52.250: W/System.err(811): at io.socket.IOConnection.handshake(IOConnection.java:322)
04-28 14:24:52.259: W/System.err(811): at io.socket.IOConnection.access$600(IOConnection.java:39)
04-28 14:24:52.259: W/System.err(811): at io.socket.IOConnection$ConnectThread.run(IOConnection.java:199)
04-28 14:24:52.259: W/System.err(811): Caused by: java.lang.ArrayIndexOutOfBoundsException
04-28 14:24:52.306: W/System.err(811): at io.socket.IOConnection.handshake(IOConnection.java:318)
04-28 14:24:52.306: W/System.err(811): ... 2 more
服务器:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8881, '192.168.1.107');
console.log('Server running at http://192.168.1.107:8881/');
客户:
public class RestClientActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
SocketIO socket = new SocketIO("http://192.168.1.107:8881/");
socket.connect(new IOCallback() {
@Override
public void onMessage(JSONObject json, IOAcknowledge ack) {
try {
System.out.println("Server said:" + json.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onMessage(String data, IOAcknowledge ack) {
System.out.println("Server said: " + data);
}
@Override
public void onError(SocketIOException socketIOException) {
System.out.println("an Error occured");
socketIOException.printStackTrace();
}
@Override
public void onDisconnect() {
System.out.println("Connection terminated.");
}
@Override
public void onConnect() {
System.out.println("Connection established");
}
@Override
public void on(String event, IOAcknowledge ack, Object... args) {
System.out
.println("Server triggered event '" + event + "'");
}
});
// This line is cached until the connection is establisched.
socket.send("Hello Server!");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
知道我做错了什么吗?如果我键入
http://192.168.1.107:8881/
在浏览器中,它将向我显示“Hello World”在页面上,但我无法使用socket.io-java-client库进行连接。首先如果您尝试使用socket为您的服务使用rest客户端。io
不是必需的只要坚持使用HTTP服务器,就可以了,在客户端使用HTTPClient
假设您使用这个android socket.io客户端
我也曾与之合作过
尝试使用服务器端套接字io脚本,这是
在服务器端,在您创建HTTP服务器的地方,您不需要配置
socket.io
来监听HTTP服务器的IP:PORT,这是完整的代码吗?是的,这是完整的代码-很抱歉,这个主题对我来说是新的。您知道我可以使用哪个库来连接到服务器吗?
var server = require('http').Server();
var io = require('socket.io')(server);
io.on('connection', function(socket){
socket.on('message', function(data){
console.log("Received message : "+data);
socket.emit("message","echoing back : "+data);
});
socket.on('disconnect', function(){
// client disconnected
});
});
server.listen(8881,"192.168.1.107");