Gottox socket.io-java-client“握手时出错原因:java.io.FileNotFoundException:http://192.168.1.69:8080/socket.i
Posted
技术标签:
【中文标题】Gottox socket.io-java-client“握手时出错原因:java.io.FileNotFoundException:http://192.168.1.69:8080/socket.io/1/【英文标题】:Gottox socket.io-java-client “Error while handshaking Caused by: java.io.FileNotFoundException: http://192.168.1.69:8080/socket.io/1/ 【发布时间】:2014-07-27 16:27:01 【问题描述】:我正在尝试与我的 android 应用程序 通信 simple node js (socket.io) 服务器 我正在使用 Gottox socket.io-java-client lib 作为客户端转换为 jar 文件,但它总是返回错误(未找到握手文件时出错)我正在使用 wifi 在本地网络上的移动设备上测试应用程序,我的 ip 是 192.168.1.69 我已经通过网络测试了服务器通信,它工作正常
节点js套接字服务器代码
var mongo = require('mongodb').MongoClient,
Client = require('socket.io').listen(8080).sockets;
mongo.connect('mongodb://192.168.1.69/chat',function(err, db)
if(err) throw err;
Client.on('connection',function(socket)
//get mongo db collection
console.log("Connected to server");
var col = db.collection("messages"),
sendStatus = function(s)
socket.emit('status',s);
;
//emit all messages
col.find().limit(100).sort(_id:1).toArray(function(err, res)
if(err) throw err;
socket.emit("output",res);
);
//wait for input
socket.on('input',function(data)
console.log("data-------> name: "+data.name+" message: "+data.message);
//insert into mongodb server
//json data from client
var name = data.name,
message = data.message,
whitespacePattern = /^\s*$/;
if(whitespacePattern.test(name) || whitespacePattern.test(message))
sendStatus("Name and Message is required.");
console.log("invalid data");
else
col.insert(name: name,message:message,function()
//emit latest to all clients
Client.emit('output',[data]);
sendStatus(
message:"message sent",
clear:true
);
);
//on input
);
//on connection
);
//mongo db connect
);
android客户端代码
package com.example.socketio;
import java.net.MalformedURLException;
import org.json.JSONObject;
import io.socket.IOAcknowledge;
import io.socket.IOCallback;
import io.socket.SocketIO;
import io.socket.SocketIOException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.button1);
final TextView text = (TextView) findViewById(R.id.textView2);
btn.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
try
SocketIO socket = new SocketIO("http://192.168.1.69:8080");
socket.connect(new IOCallback()
@Override
public void onMessage(JSONObject arg0, IOAcknowledge arg1)
// TODO Auto-generated method stub
@Override
public void onMessage(String arg0, IOAcknowledge arg1)
// TODO Auto-generated method stub
@Override
public void onError(SocketIOException arg0)
// TODO Auto-generated method stub
arg0.printStackTrace();
@Override
public void onDisconnect()
// TODO Auto-generated method stub
@Override
public void onConnect()
// TODO Auto-generated method stub
@Override
public void on(String arg0, IOAcknowledge arg1, Object... arg2)
// TODO Auto-generated method stub
);
socket.emit("input", "hello");
catch (MalformedURLException e)
// TODO Auto-generated catch block
e.printStackTrace();
);
错误:
06-07 11:05:35.414: W/System.err(26605): io.socket.SocketIOException: Error while handshaking
06-07 11:05:35.414: W/System.err(26605): at io.socket.IOConnection.handshake(IOConnection.java:322)
06-07 11:05:35.414: W/System.err(26605): at io.socket.IOConnection.access$600(IOConnection.java:39)
06-07 11:05:35.424: W/System.err(26605): at io.socket.IOConnection$ConnectThread.run(IOConnection.java:199)
06-07 11:05:35.424: W/System.err(26605): Caused by: java.io.FileNotFoundException: http://192.168.1.69:8080/socket.io/1/
06-07 11:05:35.424: W/System.err(26605): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
06-07 11:05:35.424: W/System.err(26605): at io.socket.IOConnection.handshake(IOConnection.java:313)
06-07 11:05:35.424: W/System.err(26605): ... 2 more
【问题讨论】:
你在哪里得到错误?请在您的代码中注明。请发布堆栈跟踪。我不明白“找不到文件错误”请解释一下。 greenapps 非常感谢您的回复,我已经更新了我的问题,请检查。 我仍然看不到错误引发了哪个语句。在 onError、onConnect 和所有其他事件处理程序上放置一个 toast 或 logstatements,以便您更好地了解发生了什么。为什么 ...8080/socket.io/1/ 上的 FileNotFoundExepion 你只调用 ...8080 ?你的服务器在 192.169.1.69? 您可以使用设备上的浏览器进行连接吗? 是的,我可以在(Android 和 iphone)和台式计算机上使用我的移动浏览器进行连接。我还测试了具有多个系统的服务器,它工作正常我的服务器在 ip:192.168.1.69 和端口:8080 我已经打印了错误(onError)事件,您可以在 android 客户端代码上看到。 【参考方案1】:问题已解决(有点),这里:Android developpement, Gottox socket.io-java-client: file not fount Exception /socket.io/1/
(尝试使用较早版本的 socket.io - 首先从 node_modules 中删除 socket.io 文件夹,然后使用以下命令安装较旧版本,例如 0.9.16:npm install socket.io@0.9.16)
【讨论】:
太好了,感谢这个伟大的遮阳篷,让我省了一点头绪:)【参考方案2】:使用这个新库在 Java 上使用 socket.io 1.0
https://github.com/nkzawa/socket.io-client.java/blob/master/README.md
【讨论】:
以上是关于Gottox socket.io-java-client“握手时出错原因:java.io.FileNotFoundException:http://192.168.1.69:8080/socket.i的主要内容,如果未能解决你的问题,请参考以下文章
Gottox socket.io-java-client“握手时出错”空指针异常
Gottox socket.io-java-client“握手时出错原因:java.io.FileNotFoundException:http://192.168.1.69:8080/socket.i
Gottox socket.io-java-client“握手时出错引起:java.io.FileNotFoundException:http://192.168.1.69:8080 / socket