SocketIO Android未发出连接事件
我正在使用和NodeJSSocketIO Android未发出连接事件,android,node.js,sockets,socket.io,Android,Node.js,Sockets,Socket.io,我正在使用和NodeJS // on my Android activity private Socket mSocket; { try { mSocket = IO.socket("http://IP_OF_MY_SERVER"); } catch (URISyntaxException e) {} } @Override protected void onCreate(Bundle sa
// on my Android activity
private Socket mSocket;
{
try {
mSocket = IO.socket("http://IP_OF_MY_SERVER");
} catch (URISyntaxException e) {}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSocket.connect();
}
我遵循官方指南,但仍mSocket.connect()
未发出connection
事件,并且在启动活动时,控制台上没有用户连接
你能告诉我我遗漏了什么,我如何调试它吗
编辑
我的Ubuntu服务器上的NodeJS应用程序:
Android活动:
编辑2
我已按建议更改了代码:
这一次我在启动活动时遇到了这个错误
myapp正在侦听
几点关键注意事项:
创建一个套接字
对象:
private Socket mSocket;
{
try {
mSocket = IO.socket(CHAT_SERVER_URL); // Your server's URL
}
catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
onCreate()
:连接并设置套接字错误listener
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.connect();
}
private Emitter.Listener onConnectError = new Emitter.Listener() {
@Override
public void call(Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Unable to connect to NodeJS server", Toast.LENGTH_LONG).show();
}
});
}
};
断开ondestory()方法中的套接字
@Override
protected void onDestroy() {
super.onDestroy();
mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
}
没有得到错误吐司是正确设置的第一个里程碑
创建一个WLAN:
(以管理员权限打开命令行,运行以下命令:)
netsh wlan set hostednetwork mode=allow ssid=NodeSocket key=1234ok
netsh wlan启动主机网络
确保您的Android设备已连接到此网络,并且您的Node.js
服务器已启动并正在运行。一些关键注意事项:
创建一个套接字
对象:
private Socket mSocket;
{
try {
mSocket = IO.socket(CHAT_SERVER_URL); // Your server's URL
}
catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
onCreate()
:连接并设置套接字错误listener
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.connect();
}
private Emitter.Listener onConnectError = new Emitter.Listener() {
@Override
public void call(Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Unable to connect to NodeJS server", Toast.LENGTH_LONG).show();
}
});
}
};
断开ondestory()方法中的套接字
@Override
protected void onDestroy() {
super.onDestroy();
mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
}
没有得到错误吐司是正确设置的第一个里程碑
创建一个WLAN:
(以管理员权限打开命令行,运行以下命令:)
netsh wlan set hostednetwork mode=allow ssid=NodeSocket key=1234ok
netsh wlan启动主机网络
确保您的Android设备已连接到此网络,并且您的Node.js
服务器已启动并正在运行。首先,您应该建立与Node.js服务器的连接。你有没有收到“无法连接到服务器”的祝酒词?(比如,每2秒一次)@Sparta没有,我没有收到祝酒词。我正在调试Android应用程序,mSocket变量已设置。您是否创建并运行了本地Node.js服务器?是的,我正在使用服务器上的Node api.js
命令运行脚本。在调用res.end(data)后删除对next()
的调用代码>首先,您应该建立到Node.js服务器的连接。你有没有收到“无法连接到服务器”的祝酒词?(比如,每2秒一次)@Sparta没有,我没有收到祝酒词。我正在调试Android应用程序,mSocket变量已设置。您是否创建并运行了本地Node.js服务器?是的,我正在使用服务器上的Node api.js
命令运行脚本。在调用res.end(data)后删除对next()
的调用代码>无法连接到NodeJS服务器这是一个开始。。您需要提供更多的代码和配置信息。请确保已将INTERNET权限添加到清单中。我的服务器是Ubuntu,因此我没有netsh
命令。我现在正在编辑我的问题,以提供完整的代码。刚刚通过您的帮助解决了问题。我会在一小时后写答案。非常感谢。无法连接到NodeJS服务器这是一个开始。。您需要提供更多的代码和配置信息。请确保已将INTERNET权限添加到清单中。我的服务器是Ubuntu,因此我没有netsh
命令。我现在正在编辑我的问题,以提供完整的代码。刚刚通过您的帮助解决了问题。我会在一小时后写答案。非常感谢你。