gpt4 book ai didi

java - 使用Socket IO的android应用程序无法登录

转载 作者:行者123 更新时间:2023-12-01 11:11:28 25 4
gpt4 key购买 nike

我正在使用 Socket.IO 在 Android 中创建一个应用程序。我被困在登录本身。这是我的登录代码

public class MainActivity extends AppCompatActivity {
EditText uname_et, pwd_et;
Button log;
String username, password;
private Socket mSocket;
private Emitter.Listener onLogin = new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.e(args[0].toString(), "data");
Log.w("yes ", "in evtLogin");
// JSONObject data = (JSONObject) args[0];

}
};

{
try {
String URL = "http://MYIP:8081";
mSocket = IO.socket(URL);
} catch (URISyntaxException e1) {
e1.printStackTrace();
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

uname_et = (EditText) findViewById(R.id.username_input);
pwd_et = (EditText) findViewById(R.id.pwd);
log = (Button) findViewById(R.id.sign_in_button);
log.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signin();
}
});

mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

@Override
public void call(Object... args) {
Log.i("Make Emit", "Emit");
Log.w(mSocket.connected() + " - ", "Connection status");
}

});
mSocket.on("evtLogin", onLogin);
mSocket.connect();
}

private void signin() {
username = uname_et.getText().toString();
password = pwd_et.getText().toString();
mSocket.emit("userName", username);
mSocket.emit("Password", password);
}

@Override
protected void onDestroy() {
super.onDestroy();
mSocket.off("evtLogin", onLogin);
}
}

我不确定套接字是否已连接,我正在从 Socket.EVENT_CONNECT 获取日志

08-31 12:22:22.062  13399-13441/com.fis.kotsocket I/Make Emit﹕ Emit
08-31 12:22:22.063 13399-13441/com.fis.kotsocket W/true -﹕ Connection status

但是 onLogin 监听器没有被调用。作为一个新手,我不知道到底该怎么做。

js代码

 //code for login event

socket.on('evtLogin', function (loginData) {
console.log('loged');
User.findOne({'login.userName':loginData.userName,'login.password':loginData.password},function(err,user){

if(err){throw err;}
else {if(!user){

console.log('not a authenticated user');
}
else
{
var userType;
User.find({'login.userName':loginData.userName,'login.password':loginData.password},function(err,rslt){
if(err){throw err;}
else
{
userType = JSON.stringify(rslt[0]['userType'].userId);
socket.emit('evtUserType',userType);
}
})
}
}

});
console.log('done');

});

最佳答案

您的套接字尚未初始化。尝试这个初始化:

private Socket mSocket;
{
try {
mSocket = IO.socket("enter url here");

} catch (URISyntaxException e) {}
}

或者您可能没有从 JavaScript 代码中发出 evtLogin 事件。

关于java - 使用Socket IO的android应用程序无法登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com