![](/img/trans.png)
[英]Socket.io 0.9 emit respond on Android, using Gottox/socket.io-java-client
[英]Android developpement, Gottox socket.io-java-client: file not fount Exception /socket.io/1/
這是我的問題:
我一直在嘗試使用socket.io-java-client作為Android應用程序,但我最終遇到握手錯誤(見下文)。
這是我的應用程序源代碼:
public void runIO(){
try {
SocketIO socket = new SocketIO("http://192.168.1.60:1337");
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();
}
}
和我的Node.js / Socket.io:
var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(1337);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
我收到以下錯誤:
06-09 03:59:53.955: W/System.err(11738): io.socket.SocketIOException: Error while handshaking
06-09 03:59:53.965: W/System.err(11738): at io.socket.IOConnection.handshake(IOConnection.java:322)
06-09 03:59:53.965: W/System.err(11738): at io.socket.IOConnection.access$7(IOConnection.java:292)
06-09 03:59:53.970: W/System.err(11738): at io.socket.IOConnection$ConnectThread.run(IOConnection.java:199)
06-09 03:59:53.970: W/System.err(11738): Caused by: java.io.FileNotFoundException: http://192.168.1.60:1337/socket.io/1/
06-09 03:59:53.975: W/System.err(11738): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
06-09 03:59:53.975: W/System.err(11738): at io.socket.IOConnection.handshake(IOConnection.java:313)
在它運行的瀏覽器上,頁面http://192.168.1.60:1337/socket.io/1/
返回以下消息(通過瀏覽器):
{"code":0,"message":"Transport unknown"}
我不知道該怎么辦才能讓它發揮作用...請幫忙:x
感謝:D
編輯:
正如Larky所說,我不得不將我的Socket.io版本降級為0.9.16 。 它就像一個帶有以下節點代碼的魅力:
var io = require('socket.io').listen(80);
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
我今天通過在服務器端(早期版本的socket.io Node模塊)恢復到早期版本的socket.io來解決了這個問題。 協議可能改變了嗎?
去做這個:
刪除node_modules文件夾中的socket.io文件夾。
在控制台類型上:
npm install socket.io@0.9.16
應該這樣做......它對我有用:)
(顯然這並沒有完全解決問題,但早期版本的socket.io對我來說對我來說很好)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.