android - Android Socket Io
问题描述
我正在尝试使用套接字 Io访问此服务器http://zajelme.com:3400 。但是 socket.connected() 给了我错误的信息。
安卓代码
套接字客户端代码
摇篮
implementation('com.github.nkzawa:socket.io-client:0.3.0') {
exclude group: 'org.json', module: 'json'
}
解决方案
您实现 Socket 的方式不足以知道为什么我的连接没有建立或发生了什么错误。尝试这种方式可能会帮助您更好地实现 SOCKET 并帮助您更好地调试。
像这样启动 Socket 连接:
Socket mSocket;
/**
* Initialize IO Socket Object
*/
private void initSocketConnection() {
try {
mSocket = IO.socket("http://zajelme.com:3400");
connectSocket();
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
/**
* Connect socket with the server
*/
private void connectSocket() {
try {
mSocket.connect();
mSocket.on(Socket.EVENT_CONNECT, onConnect);
mSocket.on(Socket.EVENT_CONNECT_ERROR, onError);
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onError);
mSocket.on(Socket.EVENT_ERROR, onError);
mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect);
} catch (Exception e) {
e.printStackTrace();
}
}
像这样停止 Socket 连接:
/**
* Called to stop socket connection and all listeners associated with it
*/
public void stopSocket() {
if (mSocket != null) {
mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT, onConnect);
mSocket.off(Socket.EVENT_DISCONNECT, onDisconnect);
mSocket.off(Socket.EVENT_CONNECT_ERROR, onError);
mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onError);
mSocket.off(Socket.EVENT_ERROR, onError);
mSocket.off(Socket.EVENT_CONNECTING);
}
}
以下是您在连接时将连接绑定的默认侦听器,以便在出现错误等情况下您可以清楚地了解发生了什么:
/**
* Receiver class for socket disconnected event
*/
private Emitter.Listener onDisconnect = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e("SOCKET_TEST", "DISCONNECTION SUCCESSFULL");
}
};
/**
* Receiver class for socket connected event
*/
private Emitter.Listener onConnect = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e("SOCKET_TEST", "CONNECTION SUCCESSFULL");
}
};
/**
* Receiver for socket failed events
*/
private Emitter.Listener onError = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e("SOCKET_TEST", "CONNECTION FAIL " + args.toString());
}
};
在应用程序中:
compile('io.socket:socket.io-client:0.8.3') {
// excluding org.json which is provided by Android
exclude group: 'org.json', module: 'json'
}
注意:检查日志,以便您知道发生了什么。
推荐阅读
- sql - 与 % 一样
- java - 没有名为“mongoTemplate”的 bean 可用。Spring Boot + MongoDB
- php - 如何滚动组合框的列表以在 Selenium php-webdriver 中显示选项?
- javascript - 剑道网格不显示所有数据/列
- arrays - 这些数组声明之间的区别?
- azure - 在 Github Profile Activity 上显示 Azure 存储库的活动
- javascript - discord.js 以及我是否需要 2 个 bot.logins?
- c# - NServicebus 和 NLog
- cron - 构建一个 cron 表达式以在定义的分钟内运行并且只运行一次(不可重复)
- python-2.7 - 如何从“timedelta 对象”中仅提取 HH:MM:SS 格式的时间